@vaneui/ui 0.3.1-alpha.20250930203841.cec91ca → 0.3.1-alpha.20251001142553.9da86c7

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 (77) hide show
  1. package/dist/components/ui/card.d.ts +8 -10
  2. package/dist/components/ui/card.d.ts.map +1 -1
  3. package/dist/components/ui/checkbox.d.ts +4 -5
  4. package/dist/components/ui/checkbox.d.ts.map +1 -1
  5. package/dist/components/ui/code.d.ts +4 -5
  6. package/dist/components/ui/code.d.ts.map +1 -1
  7. package/dist/components/ui/col.d.ts +4 -5
  8. package/dist/components/ui/col.d.ts.map +1 -1
  9. package/dist/components/ui/container.d.ts +4 -5
  10. package/dist/components/ui/container.d.ts.map +1 -1
  11. package/dist/components/ui/divider.d.ts +4 -5
  12. package/dist/components/ui/divider.d.ts.map +1 -1
  13. package/dist/components/ui/grid.d.ts +20 -25
  14. package/dist/components/ui/grid.d.ts.map +1 -1
  15. package/dist/components/ui/img.d.ts +4 -5
  16. package/dist/components/ui/img.d.ts.map +1 -1
  17. package/dist/components/ui/input.d.ts +4 -5
  18. package/dist/components/ui/input.d.ts.map +1 -1
  19. package/dist/components/ui/label.d.ts +4 -5
  20. package/dist/components/ui/label.d.ts.map +1 -1
  21. package/dist/components/ui/props/breakpoint.d.ts +9 -11
  22. package/dist/components/ui/props/breakpoint.d.ts.map +1 -1
  23. package/dist/components/ui/props/hide.d.ts +9 -11
  24. package/dist/components/ui/props/hide.d.ts.map +1 -1
  25. package/dist/components/ui/props/keys.d.ts +2 -2
  26. package/dist/components/ui/row.d.ts +8 -10
  27. package/dist/components/ui/row.d.ts.map +1 -1
  28. package/dist/components/ui/section.d.ts +8 -10
  29. package/dist/components/ui/section.d.ts.map +1 -1
  30. package/dist/components/ui/stack.d.ts +8 -10
  31. package/dist/components/ui/stack.d.ts.map +1 -1
  32. package/dist/components/ui/theme/badgeTheme.d.ts +4 -2
  33. package/dist/components/ui/theme/badgeTheme.d.ts.map +1 -1
  34. package/dist/components/ui/theme/buttonTheme.d.ts +4 -2
  35. package/dist/components/ui/theme/buttonTheme.d.ts.map +1 -1
  36. package/dist/components/ui/theme/cardTheme.d.ts +2 -0
  37. package/dist/components/ui/theme/cardTheme.d.ts.map +1 -1
  38. package/dist/components/ui/theme/checkboxTheme.d.ts +1 -1
  39. package/dist/components/ui/theme/checkboxTheme.d.ts.map +1 -1
  40. package/dist/components/ui/theme/chipTheme.d.ts +4 -2
  41. package/dist/components/ui/theme/chipTheme.d.ts.map +1 -1
  42. package/dist/components/ui/theme/codeTheme.d.ts +4 -2
  43. package/dist/components/ui/theme/codeTheme.d.ts.map +1 -1
  44. package/dist/components/ui/theme/common/ComponentTheme.d.ts +0 -2
  45. package/dist/components/ui/theme/common/ComponentTheme.d.ts.map +1 -1
  46. package/dist/components/ui/theme/defaults.d.ts.map +1 -1
  47. package/dist/components/ui/theme/inputTheme.d.ts +4 -2
  48. package/dist/components/ui/theme/inputTheme.d.ts.map +1 -1
  49. package/dist/components/ui/theme/labelTheme.d.ts +3 -1
  50. package/dist/components/ui/theme/labelTheme.d.ts.map +1 -1
  51. package/dist/components/ui/theme/layout/hideTheme.d.ts +8 -10
  52. package/dist/components/ui/theme/layout/hideTheme.d.ts.map +1 -1
  53. package/dist/components/ui/theme/sectionTheme.d.ts.map +1 -1
  54. package/dist/components/ui/theme/size/breakpointTheme.d.ts +8 -10
  55. package/dist/components/ui/theme/size/breakpointTheme.d.ts.map +1 -1
  56. package/dist/components/ui/theme/size/fontSizeTheme.d.ts.map +1 -0
  57. package/dist/components/ui/theme/size/gapTheme.d.ts.map +1 -1
  58. package/dist/components/ui/theme/{typography → size}/lineHeightTheme.d.ts +1 -0
  59. package/dist/components/ui/theme/size/lineHeightTheme.d.ts.map +1 -0
  60. package/dist/components/ui/theme/size/pxTheme.d.ts +1 -1
  61. package/dist/components/ui/theme/size/pxTheme.d.ts.map +1 -1
  62. package/dist/components/ui/theme/size/sizeTheme.d.ts +1 -4
  63. package/dist/components/ui/theme/size/sizeTheme.d.ts.map +1 -1
  64. package/dist/components/ui/theme/typographyTheme.d.ts +3 -2
  65. package/dist/components/ui/theme/typographyTheme.d.ts.map +1 -1
  66. package/dist/components/ui/typography.d.ts +4 -5
  67. package/dist/components/ui/typography.d.ts.map +1 -1
  68. package/dist/index.esm.js +175 -173
  69. package/dist/index.esm.js.map +1 -1
  70. package/dist/index.js +182 -182
  71. package/dist/index.js.map +1 -1
  72. package/dist/ui.css +72 -16
  73. package/dist/vars.css +10 -6
  74. package/package.json +1 -1
  75. package/dist/components/ui/theme/typography/fontSizeTheme.d.ts.map +0 -1
  76. package/dist/components/ui/theme/typography/lineHeightTheme.d.ts.map +0 -1
  77. /package/dist/components/ui/theme/{typography → size}/fontSizeTheme.d.ts +0 -0
package/dist/index.js CHANGED
@@ -55,18 +55,16 @@ const BORDER_VALUES = [BORDER$1, BORDER_T, BORDER_B, BORDER_L, BORDER_R, BORDER_
55
55
  /** All border side keys (excluding noBorder since it doesn't have a CSS class) */
56
56
  const BORDER_KEYS = [BORDER$1, BORDER_T, BORDER_B, BORDER_L, BORDER_R, BORDER_X, BORDER_Y];
57
57
 
58
- /** Extra-small column breakpoint - responsive grid column sizing for xs screens */
59
- const XS_COL = 'xsCol';
60
- /** Small column breakpoint - responsive grid column sizing for sm screens */
61
- const SM_COL = 'smCol';
62
- /** Medium column breakpoint - responsive grid column sizing for md screens */
63
- const MD_COL = 'mdCol';
64
- /** Large column breakpoint - responsive grid column sizing for lg screens */
65
- const LG_COL = 'lgCol';
66
- /** Extra-large column breakpoint - responsive grid column sizing for xl screens */
67
- const XL_COL = 'xlCol';
58
+ /** Mobile column breakpoint - switch to column layout on mobile devices (max-mobile: 20rem) */
59
+ const MOBILE_COL = 'mobileCol';
60
+ /** Tablet column breakpoint - switch to column layout on tablet devices (max-tablet: 40rem) */
61
+ const TABLET_COL = 'tabletCol';
62
+ /** Laptop column breakpoint - switch to column layout on laptop devices (max-laptop: 64rem) */
63
+ const LAPTOP_COL = 'laptopCol';
64
+ /** Desktop column breakpoint - switch to column layout on desktop devices (max-desktop: 80rem) */
65
+ const DESKTOP_COL = 'desktopCol';
68
66
  /** All breakpoint property values */
69
- const BREAKPOINT_VALUES = [XS_COL, SM_COL, MD_COL, LG_COL, XL_COL];
67
+ const BREAKPOINT_VALUES = [MOBILE_COL, TABLET_COL, LAPTOP_COL, DESKTOP_COL];
70
68
 
71
69
  /** Inline display - flows with text */
72
70
  const INLINE = 'inline';
@@ -148,18 +146,16 @@ const NO_GAP = 'noGap';
148
146
  /** All gap property values */
149
147
  const GAP_VALUES = [GAP, NO_GAP];
150
148
 
151
- /** Hide element on extra-small screens and up - visible only on mobile */
152
- const XS_HIDE = 'xsHide';
153
- /** Hide element on small screens and up - visible only on extra-small mobile */
154
- const SM_HIDE = 'smHide';
155
- /** Hide element on medium screens and up - visible only on small screens and below */
156
- const MD_HIDE = 'mdHide';
157
- /** Hide element on large screens and up - visible only on medium screens and below */
158
- const LG_HIDE = 'lgHide';
159
- /** Hide element on extra-large screens and up - visible only on large screens and below */
160
- const XL_HIDE = 'xlHide';
149
+ /** Hide element on mobile devices and below (max-mobile: 20rem) */
150
+ const MOBILE_HIDE = 'mobileHide';
151
+ /** Hide element on tablet devices and below (max-tablet: 40rem) */
152
+ const TABLET_HIDE = 'tabletHide';
153
+ /** Hide element on laptop devices and below (max-laptop: 64rem) */
154
+ const LAPTOP_HIDE = 'laptopHide';
155
+ /** Hide element on desktop devices and below (max-desktop: 80rem) */
156
+ const DESKTOP_HIDE = 'desktopHide';
161
157
  /** All hide property values */
162
- const HIDE_VALUES = [XS_HIDE, SM_HIDE, MD_HIDE, LG_HIDE, XL_HIDE];
158
+ const HIDE_VALUES = [MOBILE_HIDE, TABLET_HIDE, LAPTOP_HIDE, DESKTOP_HIDE];
163
159
 
164
160
  /** Align items to the start of the cross axis */
165
161
  const ITEMS_START = 'itemsStart';
@@ -568,16 +564,14 @@ const ComponentCategories = {
568
564
  class HideTheme extends BaseTheme {
569
565
  constructor() {
570
566
  super(...arguments);
571
- /** Hide element on extra-small screens and below */
572
- this.xsHide = "max-xs:hidden";
573
- /** Hide element on small screens and below */
574
- this.smHide = "max-sm:hidden";
575
- /** Hide element on medium screens and below */
576
- this.mdHide = "max-md:hidden";
577
- /** Hide element on large screens and below */
578
- this.lgHide = "max-lg:hidden";
579
- /** Hide element on extra-large screens and below */
580
- this.xlHide = "max-xl:hidden";
567
+ /** Hide element on mobile devices and below (max-mobile: 20rem) */
568
+ this.mobileHide = "max-mobile:hidden";
569
+ /** Hide element on tablet devices and below (max-tablet: 40rem) */
570
+ this.tabletHide = "max-tablet:hidden";
571
+ /** Hide element on laptop devices and below (max-laptop: 64rem) */
572
+ this.laptopHide = "max-laptop:hidden";
573
+ /** Hide element on desktop devices and below (max-desktop: 80rem) */
574
+ this.desktopHide = "max-desktop:hidden";
581
575
  }
582
576
  getClasses(extractedKeys) {
583
577
  return [(extractedKeys === null || extractedKeys === void 0 ? void 0 : extractedKeys.hide) ? this[extractedKeys.hide] : ''];
@@ -753,64 +747,6 @@ class TextAlignTheme extends BaseTheme {
753
747
  }
754
748
  }
755
749
 
756
- class LineHeightTheme extends BaseTheme {
757
- constructor(customMapping) {
758
- super();
759
- /** Extra-small line height - matches text-xs default line height */
760
- this.xs = "[--lh-unit:1.333]"; // calc(1 / 0.75) ≈ 1.333
761
- /** Small line height - matches text-sm default line height */
762
- this.sm = "[--lh-unit:1.429]"; // calc(1.25 / 0.875) ≈ 1.429
763
- /** Medium line height - matches text-base default line height */
764
- this.md = "[--lh-unit:1.5]"; // calc(1.5 / 1) = 1.5
765
- /** Large line height - matches text-lg default line height */
766
- this.lg = "[--lh-unit:1.556]"; // calc(1.75 / 1.125) ≈ 1.556
767
- /** Extra-large line height - matches text-xl default line height */
768
- this.xl = "[--lh-unit:1.4]"; // calc(1.75 / 1.25) = 1.4
769
- if (customMapping) {
770
- this.xs = customMapping.xs || this.xs;
771
- this.sm = customMapping.sm || this.sm;
772
- this.md = customMapping.md || this.md;
773
- this.lg = customMapping.lg || this.lg;
774
- this.xl = customMapping.xl || this.xl;
775
- }
776
- }
777
- getClasses(extractedKeys) {
778
- if (extractedKeys === null || extractedKeys === void 0 ? void 0 : extractedKeys.size) {
779
- const lhUnitClass = this[extractedKeys.size];
780
- return lhUnitClass ? [lhUnitClass, "leading-(--lh)"] : [];
781
- }
782
- return [this.md, "leading-(--lh)"];
783
- }
784
- // Static factory methods for different text size ranges
785
- static createForSectionTitle() {
786
- return new LineHeightTheme({
787
- xs: "[--lh-unit:1.333]", // text-2xl: calc(2 / 1.5) ≈ 1.333
788
- sm: "[--lh-unit:1.2]", // text-3xl: calc(2.25 / 1.875) = 1.2
789
- md: "[--lh-unit:1.111]", // text-4xl: calc(2.5 / 2.25) ≈ 1.111
790
- lg: "[--lh-unit:1]", // text-5xl: 1
791
- xl: "[--lh-unit:1]" // text-6xl+: 1
792
- });
793
- }
794
- static createForPageTitle() {
795
- return new LineHeightTheme({
796
- xs: "[--lh-unit:1.2]", // text-3xl: calc(2.25 / 1.875) = 1.2
797
- sm: "[--lh-unit:1.111]", // text-4xl: calc(2.5 / 2.25) ≈ 1.111
798
- md: "[--lh-unit:1]", // text-5xl: 1
799
- lg: "[--lh-unit:1]", // text-6xl: 1
800
- xl: "[--lh-unit:1]" // text-7xl: 1
801
- });
802
- }
803
- static createForTitle() {
804
- return new LineHeightTheme({
805
- xs: "[--lh-unit:1.556]", // text-lg: calc(1.75 / 1.125) ≈ 1.556
806
- sm: "[--lh-unit:1.4]", // text-xl: calc(1.75 / 1.25) = 1.4
807
- md: "[--lh-unit:1.333]", // text-2xl: calc(2 / 1.5) ≈ 1.333
808
- lg: "[--lh-unit:1.2]", // text-3xl: calc(2.25 / 1.875) = 1.2
809
- xl: "[--lh-unit:1.111]" // text-4xl: calc(2.5 / 2.25) ≈ 1.111
810
- });
811
- }
812
- }
813
-
814
750
  class DisplayTheme extends BaseTheme {
815
751
  constructor() {
816
752
  super(...arguments);
@@ -3629,8 +3565,7 @@ const defaultTypographyThemes = {
3629
3565
  fontStyle: new FontStyleTheme(),
3630
3566
  textDecoration: new TextDecorationTheme(),
3631
3567
  textTransform: new TextTransformTheme(),
3632
- textAlign: new TextAlignTheme(),
3633
- lineHeight: new LineHeightTheme()
3568
+ textAlign: new TextAlignTheme()
3634
3569
  };
3635
3570
  class ComponentTheme {
3636
3571
  constructor(tag, base, themes, defaults = {}, categories, tagFunction) {
@@ -3736,9 +3671,9 @@ class FontSizeTheme extends BaseTheme {
3736
3671
  getClasses(extractedKeys) {
3737
3672
  if (extractedKeys === null || extractedKeys === void 0 ? void 0 : extractedKeys.size) {
3738
3673
  const fsUnitClass = this[extractedKeys.size];
3739
- return fsUnitClass ? [fsUnitClass, "text-(--fs)"] : [];
3674
+ return fsUnitClass ? [fsUnitClass, "text-(length:--fs)"] : [];
3740
3675
  }
3741
- return [this.md, "text-(--fs)"];
3676
+ return [this.md, "text-(length:--fs)"];
3742
3677
  }
3743
3678
  // Static factory methods for different text size ranges
3744
3679
  static createForPageTitle() {
@@ -3770,40 +3705,64 @@ class FontSizeTheme extends BaseTheme {
3770
3705
  }
3771
3706
  }
3772
3707
 
3773
- class SizeTheme extends BaseTheme {
3774
- constructor(sizeMap, useDefaultKey = true) {
3708
+ class LineHeightTheme extends BaseTheme {
3709
+ constructor(customMapping) {
3775
3710
  super();
3776
- /** Extra-small size variant */
3777
- this.xs = "";
3778
- /** Small size variant */
3779
- this.sm = "";
3780
- /** Medium size variant (default) */
3781
- this.md = "";
3782
- /** Large size variant */
3783
- this.lg = "";
3784
- /** Extra-large size variant */
3785
- this.xl = "";
3786
- this.useDefaultKey = useDefaultKey;
3787
- if (sizeMap instanceof FontSizeTheme) {
3788
- this.fontSizeTheme = sizeMap;
3789
- ComponentKeys.size.forEach((key) => {
3790
- this[key] = sizeMap[key];
3791
- });
3792
- }
3793
- else {
3794
- ComponentKeys.size.forEach((key) => {
3795
- var _a;
3796
- this[key] = (_a = sizeMap === null || sizeMap === void 0 ? void 0 : sizeMap[key]) !== null && _a !== void 0 ? _a : "";
3797
- });
3711
+ /** Extra-small line height - matches text-xs default line height */
3712
+ this.xs = "[--lh-unit:1.333]"; // calc(1 / 0.75) ≈ 1.333
3713
+ /** Small line height - matches text-sm default line height */
3714
+ this.sm = "[--lh-unit:1.429]"; // calc(1.25 / 0.875) ≈ 1.429
3715
+ /** Medium line height - matches text-base default line height */
3716
+ this.md = "[--lh-unit:1.5]"; // calc(1.5 / 1) = 1.5
3717
+ /** Large line height - matches text-lg default line height */
3718
+ this.lg = "[--lh-unit:1.556]"; // calc(1.75 / 1.125) ≈ 1.556
3719
+ /** Extra-large line height - matches text-xl default line height */
3720
+ this.xl = "[--lh-unit:1.4]"; // calc(1.75 / 1.25) = 1.4
3721
+ if (customMapping) {
3722
+ this.xs = customMapping.xs || this.xs;
3723
+ this.sm = customMapping.sm || this.sm;
3724
+ this.md = customMapping.md || this.md;
3725
+ this.lg = customMapping.lg || this.lg;
3726
+ this.xl = customMapping.xl || this.xl;
3798
3727
  }
3799
3728
  }
3800
3729
  getClasses(extractedKeys) {
3801
- var _a;
3802
- if (this.fontSizeTheme) {
3803
- return this.fontSizeTheme.getClasses(extractedKeys);
3730
+ if (extractedKeys === null || extractedKeys === void 0 ? void 0 : extractedKeys.size) {
3731
+ const lhUnitClass = this[extractedKeys.size];
3732
+ return lhUnitClass ? [lhUnitClass, "leading-(--lh)"] : [];
3804
3733
  }
3805
- const size = (_a = extractedKeys === null || extractedKeys === void 0 ? void 0 : extractedKeys.size) !== null && _a !== void 0 ? _a : (this.useDefaultKey ? 'md' : undefined);
3806
- return size ? [this[size]] : [''];
3734
+ return [this.md, "leading-(--lh)"];
3735
+ }
3736
+ static createDefault() {
3737
+ return new LineHeightTheme();
3738
+ }
3739
+ // Static factory methods for different text size ranges
3740
+ static createForSectionTitle() {
3741
+ return new LineHeightTheme({
3742
+ xs: "[--lh-unit:1.333]", // text-2xl: calc(2 / 1.5) ≈ 1.333
3743
+ sm: "[--lh-unit:1.2]", // text-3xl: calc(2.25 / 1.875) = 1.2
3744
+ md: "[--lh-unit:1.111]", // text-4xl: calc(2.5 / 2.25) ≈ 1.111
3745
+ lg: "[--lh-unit:1]", // text-5xl: 1
3746
+ xl: "[--lh-unit:1]" // text-6xl+: 1
3747
+ });
3748
+ }
3749
+ static createForPageTitle() {
3750
+ return new LineHeightTheme({
3751
+ xs: "[--lh-unit:1.2]", // text-3xl: calc(2.25 / 1.875) = 1.2
3752
+ sm: "[--lh-unit:1.111]", // text-4xl: calc(2.5 / 2.25) ≈ 1.111
3753
+ md: "[--lh-unit:1]", // text-5xl: 1
3754
+ lg: "[--lh-unit:1]", // text-6xl: 1
3755
+ xl: "[--lh-unit:1]" // text-7xl: 1
3756
+ });
3757
+ }
3758
+ static createForTitle() {
3759
+ return new LineHeightTheme({
3760
+ xs: "[--lh-unit:1.556]", // text-lg: calc(1.75 / 1.125) ≈ 1.556
3761
+ sm: "[--lh-unit:1.4]", // text-xl: calc(1.75 / 1.25) = 1.4
3762
+ md: "[--lh-unit:1.333]", // text-2xl: calc(2 / 1.5) ≈ 1.333
3763
+ lg: "[--lh-unit:1.2]", // text-3xl: calc(2.25 / 1.875) = 1.2
3764
+ xl: "[--lh-unit:1.111]" // text-4xl: calc(2.5 / 2.25) ≈ 1.111
3765
+ });
3807
3766
  }
3808
3767
  }
3809
3768
 
@@ -4026,9 +3985,9 @@ class PaddingTheme extends BaseTheme {
4026
3985
 
4027
3986
  /** Horizontal padding theme - controls left and right padding */
4028
3987
  class PxTheme extends PaddingTheme {
4029
- constructor(aspectRatioMap, isUIComponent = false) {
3988
+ constructor(aspectRatio, isUIComponent = false) {
4030
3989
  super();
4031
- this.aspectRatioMap = aspectRatioMap;
3990
+ this.aspectRatioMap = aspectRatio;
4032
3991
  this.isUIComponent = isUIComponent;
4033
3992
  // PxTheme should not set any padding classes - that's PyTheme's job
4034
3993
  // PxTheme only handles aspect-ratio
@@ -4732,6 +4691,7 @@ const themeDefaults = {
4732
4691
  container: {
4733
4692
  noRing: true,
4734
4693
  flex: true,
4694
+ column: true,
4735
4695
  md: true,
4736
4696
  itemsCenter: true,
4737
4697
  gap: true,
@@ -4906,7 +4866,6 @@ const themeDefaults = {
4906
4866
  },
4907
4867
  };
4908
4868
 
4909
- // Button-specific aspect ratios (px-2,3,4,5,6 vs py-1,1.5,2,2.5,3)
4910
4869
  const buttonAspectRatioClasses = {
4911
4870
  xs: "[--aspect-ratio:2]", // px-2 vs py-1 = 2
4912
4871
  sm: "[--aspect-ratio:2]", // px-3 vs py-1.5 = 2
@@ -4919,7 +4878,14 @@ const defaultButtonTheme = new ComponentTheme("button", "w-fit h-fit cursor-poin
4919
4878
  px: new PxTheme(buttonAspectRatioClasses, true),
4920
4879
  py: new PyTheme(uiPaddingClasses, true),
4921
4880
  gap: new GapTheme(true),
4922
- text: new SizeTheme({ xs: 'text-xs', sm: 'text-sm', md: 'text-base', lg: 'text-lg', xl: 'text-xl' }),
4881
+ text: new FontSizeTheme(),
4882
+ lineHeight: new LineHeightTheme({
4883
+ xs: "[--lh-unit:1.3]",
4884
+ sm: "[--lh-unit:1.3]",
4885
+ md: "[--lh-unit:1.3]",
4886
+ lg: "[--lh-unit:1.3]",
4887
+ xl: "[--lh-unit:1.3]"
4888
+ }),
4923
4889
  },
4924
4890
  appearance: {
4925
4891
  background: GenericVariantTheme.createBgAppearanceTheme(),
@@ -4957,7 +4923,8 @@ const defaultBadgeTheme = new ComponentTheme("span", "w-fit h-fit transition-all
4957
4923
  px: new PxTheme(badgeAspectRatioClasses, true),
4958
4924
  py: new PyTheme(uiPaddingClasses, true),
4959
4925
  gap: new GapTheme(true),
4960
- text: new SizeTheme({ xs: 'text-xs', sm: 'text-sm', md: 'text-base', lg: 'text-lg', xl: 'text-xl' })
4926
+ text: new FontSizeTheme(),
4927
+ lineHeight: LineHeightTheme.createDefault()
4961
4928
  },
4962
4929
  appearance: {
4963
4930
  background: GenericVariantTheme.createSimpleUIElementBgAppearanceTheme(),
@@ -4999,7 +4966,8 @@ const defaultChipTheme = new ComponentTheme("span", "w-fit h-fit transition-all
4999
4966
  size: {
5000
4967
  px: new PxTheme(chipAspectRatioClasses, true),
5001
4968
  py: new PyTheme(chipPyClasses, true),
5002
- text: new SizeTheme({ xs: 'text-xs', sm: 'text-sm', md: 'text-base', lg: 'text-lg', xl: 'text-xl' }),
4969
+ text: new FontSizeTheme(),
4970
+ lineHeight: LineHeightTheme.createDefault(),
5003
4971
  gap: new GapTheme(true)
5004
4972
  },
5005
4973
  appearance: {
@@ -5042,7 +5010,8 @@ const defaultCodeTheme = new ComponentTheme("code", "", {
5042
5010
  size: {
5043
5011
  px: new PxTheme(codeAspectRatioClasses, true),
5044
5012
  py: new PyTheme(codePyClasses, true),
5045
- text: new SizeTheme({ xs: 'text-xs', sm: 'text-sm', md: 'text-sm', lg: 'text-base', xl: 'text-lg' }),
5013
+ text: new FontSizeTheme(),
5014
+ lineHeight: LineHeightTheme.createDefault(),
5046
5015
  gap: new GapTheme(true)
5047
5016
  },
5048
5017
  appearance: {
@@ -5175,18 +5144,16 @@ class ListStyleTheme extends BaseTheme {
5175
5144
  }
5176
5145
  }
5177
5146
 
5178
- const createTypographyComponentTheme = (tag, base = "text-balance", fontSizeTheme = new FontSizeTheme(), defaults = {}, lineHeightTheme) => {
5179
- const typographyThemes = lineHeightTheme
5180
- ? { ...defaultTypographyThemes, lineHeight: lineHeightTheme }
5181
- : defaultTypographyThemes;
5147
+ const createTypographyComponentTheme = (tag, base = "text-balance", fontSizeTheme = new FontSizeTheme(), defaults = {}, lineHeightTheme = LineHeightTheme.createDefault()) => {
5182
5148
  return new ComponentTheme(tag, base, {
5183
5149
  size: {
5184
5150
  text: fontSizeTheme,
5151
+ lineHeight: lineHeightTheme,
5185
5152
  },
5186
5153
  appearance: {
5187
5154
  text: GenericVariantTheme.createTypographyTextTheme(),
5188
5155
  },
5189
- typography: typographyThemes,
5156
+ typography: defaultTypographyThemes,
5190
5157
  layout: defaultLayoutsThemes,
5191
5158
  }, defaults, TYPOGRAPHY_CATEGORIES, (props) => {
5192
5159
  // Determine tag based on href prop
@@ -5246,16 +5213,14 @@ const listTheme = new ComponentTheme("ul", "list-inside", {
5246
5213
  class BreakpointTheme extends BaseTheme {
5247
5214
  constructor() {
5248
5215
  super(...arguments);
5249
- /** Switch to column layout on extra-small screens and below */
5250
- this.xsCol = "max-xs:flex-col";
5251
- /** Switch to column layout on small screens and below */
5252
- this.smCol = "max-sm:flex-col";
5253
- /** Switch to column layout on medium screens and below */
5254
- this.mdCol = "max-md:flex-col";
5255
- /** Switch to column layout on large screens and below */
5256
- this.lgCol = "max-lg:flex-col";
5257
- /** Switch to column layout on extra-large screens and below */
5258
- this.xlCol = "max-xl:flex-col";
5216
+ /** Switch to column layout on mobile devices and below (max-mobile: 20rem) */
5217
+ this.mobileCol = "max-mobile:flex-col";
5218
+ /** Switch to column layout on tablet devices and below (max-tablet: 40rem) */
5219
+ this.tabletCol = "max-tablet:flex-col";
5220
+ /** Switch to column layout on laptop devices and below (max-laptop: 64rem) */
5221
+ this.laptopCol = "max-laptop:flex-col";
5222
+ /** Switch to column layout on desktop devices and below (max-desktop: 80rem) */
5223
+ this.desktopCol = "max-desktop:flex-col";
5259
5224
  }
5260
5225
  getClasses(extractedKeys) {
5261
5226
  return (extractedKeys === null || extractedKeys === void 0 ? void 0 : extractedKeys.breakpoint) ? [this[extractedKeys.breakpoint] || ''] : [];
@@ -5264,9 +5229,22 @@ class BreakpointTheme extends BaseTheme {
5264
5229
 
5265
5230
  const defaultCardTheme = new ComponentTheme("div", "", {
5266
5231
  size: {
5267
- px: new PxTheme(),
5268
- py: new PyTheme(),
5269
- gap: new GapTheme(true),
5232
+ px: new PxTheme({
5233
+ xs: "[--aspect-ratio:1]",
5234
+ sm: "[--aspect-ratio:1]",
5235
+ md: "[--aspect-ratio:1]",
5236
+ lg: "[--aspect-ratio:1]",
5237
+ xl: "[--aspect-ratio:1]",
5238
+ }),
5239
+ py: new PyTheme({
5240
+ xs: "[--py-unit:2]",
5241
+ sm: "[--py-unit:4]",
5242
+ md: "[--py-unit:6]",
5243
+ lg: "[--py-unit:8]",
5244
+ xl: "[--py-unit:10]",
5245
+ }),
5246
+ lineHeight: LineHeightTheme.createDefault(),
5247
+ gap: new GapTheme(false),
5270
5248
  },
5271
5249
  layout: {
5272
5250
  ...defaultLayoutsThemes,
@@ -5321,7 +5299,32 @@ const defaultDividerTheme = new ComponentTheme("div", "h-px w-full", {
5321
5299
  layout: defaultLayoutsThemes,
5322
5300
  }, themeDefaults.divider, DIVIDER_CATEGORIES);
5323
5301
 
5324
- const defaultContainerTheme = new ComponentTheme("div", "flex-col mx-auto w-full", {
5302
+ class SizeTheme extends BaseTheme {
5303
+ constructor(sizeMap) {
5304
+ super();
5305
+ /** Extra-small size variant */
5306
+ this.xs = "";
5307
+ /** Small size variant */
5308
+ this.sm = "";
5309
+ /** Medium size variant (default) */
5310
+ this.md = "";
5311
+ /** Large size variant */
5312
+ this.lg = "";
5313
+ /** Extra-large size variant */
5314
+ this.xl = "";
5315
+ ComponentKeys.size.forEach((key) => {
5316
+ var _a;
5317
+ this[key] = (_a = sizeMap === null || sizeMap === void 0 ? void 0 : sizeMap[key]) !== null && _a !== void 0 ? _a : "";
5318
+ });
5319
+ }
5320
+ getClasses(extractedKeys) {
5321
+ var _a;
5322
+ const size = (_a = extractedKeys === null || extractedKeys === void 0 ? void 0 : extractedKeys.size) !== null && _a !== void 0 ? _a : 'md';
5323
+ return size ? [this[size]] : [''];
5324
+ }
5325
+ }
5326
+
5327
+ const defaultContainerTheme = new ComponentTheme("div", "mx-auto w-full", {
5325
5328
  size: {
5326
5329
  gap: new GapTheme(),
5327
5330
  maxWidth: new SizeTheme({ xs: 'max-w-3xl', sm: 'max-w-4xl', md: 'max-w-5xl', lg: 'max-w-6xl', xl: 'max-w-7xl' }),
@@ -5388,22 +5391,21 @@ const defaultStackTheme = new ComponentTheme("div", "", {
5388
5391
  }
5389
5392
  }, themeDefaults.stack, STACK_CATEGORIES);
5390
5393
 
5391
- const sectionAspectRatioClasses = {
5392
- xs: "[--aspect-ratio:2.5]",
5393
- sm: "[--aspect-ratio:2]",
5394
- md: "[--aspect-ratio:1.75]",
5395
- lg: "[--aspect-ratio:1.6]",
5396
- xl: "[--aspect-ratio:1.5]",
5397
- };
5398
5394
  const defaultSectionTheme = new ComponentTheme("div", "w-full", {
5399
5395
  size: {
5400
- px: new PxTheme(sectionAspectRatioClasses),
5396
+ px: new PxTheme({
5397
+ xs: "[--aspect-ratio:2.5]",
5398
+ sm: "[--aspect-ratio:2]",
5399
+ md: "[--aspect-ratio:1.75]",
5400
+ lg: "[--aspect-ratio:1.6]",
5401
+ xl: "[--aspect-ratio:1.5]",
5402
+ }),
5401
5403
  py: new PyTheme({
5402
- xs: "[--py-unit:4]",
5403
- sm: "[--py-unit:8]",
5404
- md: "[--py-unit:12]",
5405
- lg: "[--py-unit:16]",
5406
- xl: "[--py-unit:20]",
5404
+ xs: "[--py-unit:4] max-laptop:[--py-unit:3] max-tablet:[--py-unit:2]",
5405
+ sm: "[--py-unit:8] max-laptop:[--py-unit:4] max-tablet:[--py-unit:2]",
5406
+ md: "[--py-unit:12] max-laptop:[--py-unit:6] max-tablet:[--py-unit:2]",
5407
+ lg: "[--py-unit:16] max-laptop:[--py-unit:8] max-tablet:[--py-unit:2]",
5408
+ xl: "[--py-unit:20] max-laptop:[--py-unit:10] max-tablet:[--py-unit:4]",
5407
5409
  }),
5408
5410
  gap: new GapTheme(),
5409
5411
  breakpoint: new BreakpointTheme(),
@@ -5508,6 +5510,7 @@ const defaultCheckboxWrapperTheme = new ComponentTheme("span", "", {
5508
5510
  const defaultLabelTheme = new ComponentTheme("label", "has-[input]:cursor-pointer cursor-default", {
5509
5511
  size: {
5510
5512
  text: new FontSizeTheme(),
5513
+ lineHeight: LineHeightTheme.createDefault(),
5511
5514
  gap: new GapTheme(true),
5512
5515
  },
5513
5516
  appearance: {
@@ -5539,20 +5542,19 @@ const defaultImgTheme = new ComponentTheme("img", "object-cover", // Default to
5539
5542
  }
5540
5543
  }, themeDefaults.img, IMG_CATEGORIES);
5541
5544
 
5542
- // Input aspect ratios (same as button)
5543
- const inputAspectRatioClasses = {
5544
- xs: "[--aspect-ratio:2]",
5545
- sm: "[--aspect-ratio:2]",
5546
- md: "[--aspect-ratio:2]",
5547
- lg: "[--aspect-ratio:2]",
5548
- xl: "[--aspect-ratio:2]",
5549
- };
5550
5545
  const defaultInputTheme = new ComponentTheme("input", "w-full transition-all duration-200", {
5551
5546
  size: {
5552
- px: new PxTheme(inputAspectRatioClasses, true),
5547
+ px: new PxTheme({
5548
+ xs: "[--aspect-ratio:2]",
5549
+ sm: "[--aspect-ratio:2]",
5550
+ md: "[--aspect-ratio:2]",
5551
+ lg: "[--aspect-ratio:2]",
5552
+ xl: "[--aspect-ratio:2]",
5553
+ }, true),
5553
5554
  py: new PyTheme(uiPaddingClasses, true),
5554
5555
  gap: new GapTheme(true),
5555
- text: new SizeTheme({ xs: 'text-xs', sm: 'text-sm', md: 'text-base', lg: 'text-lg', xl: 'text-xl' }),
5556
+ text: new FontSizeTheme(),
5557
+ lineHeight: LineHeightTheme.createDefault(),
5556
5558
  },
5557
5559
  appearance: {
5558
5560
  background: GenericVariantTheme.createSimpleUIElementBgAppearanceTheme(),
@@ -5914,6 +5916,8 @@ exports.Container = Container;
5914
5916
  exports.DANGER = DANGER;
5915
5917
  exports.DECIMAL = DECIMAL;
5916
5918
  exports.DEFAULT = DEFAULT;
5919
+ exports.DESKTOP_COL = DESKTOP_COL;
5920
+ exports.DESKTOP_HIDE = DESKTOP_HIDE;
5917
5921
  exports.DISC = DISC;
5918
5922
  exports.DISPLAY_VALUES = DISPLAY_VALUES;
5919
5923
  exports.DIVIDER_CATEGORIES = DIVIDER_CATEGORIES;
@@ -5973,12 +5977,12 @@ exports.JUSTIFY_START = JUSTIFY_START;
5973
5977
  exports.JUSTIFY_STRETCH = JUSTIFY_STRETCH;
5974
5978
  exports.JUSTIFY_VALUES = JUSTIFY_VALUES;
5975
5979
  exports.LABEL_CATEGORIES = LABEL_CATEGORIES;
5980
+ exports.LAPTOP_COL = LAPTOP_COL;
5981
+ exports.LAPTOP_HIDE = LAPTOP_HIDE;
5976
5982
  exports.LAYOUT_CORE = LAYOUT_CORE;
5977
5983
  exports.LAYOUT_FLEX = LAYOUT_FLEX;
5978
5984
  exports.LAYOUT_FULL = LAYOUT_FULL;
5979
5985
  exports.LG = LG;
5980
- exports.LG_COL = LG_COL;
5981
- exports.LG_HIDE = LG_HIDE;
5982
5986
  exports.LIGHT = LIGHT;
5983
5987
  exports.LINE_THROUGH = LINE_THROUGH;
5984
5988
  exports.LINK = LINK;
@@ -5991,9 +5995,9 @@ exports.Link = Link;
5991
5995
  exports.List = List;
5992
5996
  exports.ListItem = ListItem;
5993
5997
  exports.MD = MD;
5994
- exports.MD_COL = MD_COL;
5995
- exports.MD_HIDE = MD_HIDE;
5996
5998
  exports.MEDIUM = MEDIUM;
5999
+ exports.MOBILE_COL = MOBILE_COL;
6000
+ exports.MOBILE_HIDE = MOBILE_HIDE;
5997
6001
  exports.MODE_VALUES = MODE_VALUES;
5998
6002
  exports.MONO = MONO;
5999
6003
  exports.ModeKeys = ModeKeys;
@@ -6053,8 +6057,6 @@ exports.SHAPE_VALUES = SHAPE_VALUES;
6053
6057
  exports.SHARP = SHARP;
6054
6058
  exports.SIZE_VALUES = SIZE_VALUES;
6055
6059
  exports.SM = SM;
6056
- exports.SM_COL = SM_COL;
6057
- exports.SM_HIDE = SM_HIDE;
6058
6060
  exports.STACK_CATEGORIES = STACK_CATEGORIES;
6059
6061
  exports.STATIC = STATIC;
6060
6062
  exports.STICKY = STICKY;
@@ -6063,6 +6065,8 @@ exports.Section = Section;
6063
6065
  exports.SectionTitle = SectionTitle;
6064
6066
  exports.Stack = Stack;
6065
6067
  exports.TABLE = TABLE;
6068
+ exports.TABLET_COL = TABLET_COL;
6069
+ exports.TABLET_HIDE = TABLET_HIDE;
6066
6070
  exports.TABLE_CELL = TABLE_CELL;
6067
6071
  exports.TERTIARY = TERTIARY;
6068
6072
  exports.TEXT_ALIGN_VALUES = TEXT_ALIGN_VALUES;
@@ -6093,11 +6097,7 @@ exports.VISUAL_LAYOUT = VISUAL_LAYOUT;
6093
6097
  exports.WARNING = WARNING;
6094
6098
  exports.WRAP_VALUES = WRAP_VALUES;
6095
6099
  exports.XL = XL;
6096
- exports.XL_COL = XL_COL;
6097
- exports.XL_HIDE = XL_HIDE;
6098
6100
  exports.XS = XS;
6099
- exports.XS_COL = XS_COL;
6100
- exports.XS_HIDE = XS_HIDE;
6101
6101
  exports.defaultTheme = defaultTheme;
6102
6102
  exports.themeDefaults = themeDefaults;
6103
6103
  exports.useTheme = useTheme;