@vertz/theme-shadcn 0.2.22 → 0.2.23

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.d.ts CHANGED
@@ -224,6 +224,7 @@ interface CalendarRootProps {
224
224
  weekStartsOn?: ComposedCalendarProps["weekStartsOn"];
225
225
  onValueChange?: ComposedCalendarProps["onValueChange"];
226
226
  onMonthChange?: (month: Date) => void;
227
+ captionLayout?: ComposedCalendarProps["captionLayout"];
227
228
  }
228
229
  type ThemedCalendarComponent = (props: CalendarRootProps) => HTMLElement;
229
230
  import { ChildValue as ChildValue10 } from "@vertz/ui";
@@ -352,6 +353,7 @@ interface ThemedContextMenuComponent {
352
353
  Separator: (props: ContextMenuSlotProps) => HTMLElement;
353
354
  }
354
355
  import { ChildValue as ChildValue15 } from "@vertz/ui";
356
+ import { ComposedCalendarProps as ComposedCalendarProps2 } from "@vertz/ui-primitives";
355
357
  interface DatePickerRootProps {
356
358
  mode?: "single" | "range";
357
359
  defaultValue?: Date | {
@@ -369,6 +371,7 @@ interface DatePickerRootProps {
369
371
  to: Date;
370
372
  } | null) => void;
371
373
  onOpenChange?: (open: boolean) => void;
374
+ captionLayout?: ComposedCalendarProps2["captionLayout"];
372
375
  children?: ChildValue15;
373
376
  }
374
377
  interface DatePickerSlotProps {
@@ -870,6 +873,8 @@ type CalendarBlocks = {
870
873
  headCell: StyleEntry8[];
871
874
  cell: StyleEntry8[];
872
875
  dayButton: StyleEntry8[];
876
+ monthSelect: StyleEntry8[];
877
+ yearSelect: StyleEntry8[];
873
878
  };
874
879
  /** Create calendar css() styles. */
875
880
  declare function createCalendarStyles(): CSSOutput16<CalendarBlocks>;
@@ -970,6 +975,7 @@ type PaginationBlocks = {
970
975
  item: StyleEntry23[];
971
976
  link: StyleEntry23[];
972
977
  linkActive: StyleEntry23[];
978
+ navButton: StyleEntry23[];
973
979
  ellipsis: StyleEntry23[];
974
980
  };
975
981
  /** Create pagination css() styles. */
package/dist/index.js CHANGED
@@ -92,9 +92,9 @@ function createAvatarComponents(avatarStyles) {
92
92
  import { resolveChildren as resolveChildren3 } from "@vertz/ui";
93
93
  function createBadgeComponent(badgeStyles) {
94
94
  const colorStyles = {
95
- blue: "background-color: oklch(0.55 0.15 250); color: #fff;",
96
- green: "background-color: oklch(0.55 0.15 155); color: #fff;",
97
- yellow: "background-color: oklch(0.75 0.15 85); color: oklch(0.25 0.05 85);"
95
+ blue: { backgroundColor: "oklch(0.55 0.15 250)", color: "#fff" },
96
+ green: { backgroundColor: "oklch(0.55 0.15 155)", color: "#fff" },
97
+ yellow: { backgroundColor: "oklch(0.75 0.15 85)", color: "oklch(0.25 0.05 85)" }
98
98
  };
99
99
  return function Badge({
100
100
  color,
@@ -107,7 +107,7 @@ function createBadgeComponent(badgeStyles) {
107
107
  el.className = [badgeStyles({ color }), effectiveClass].filter(Boolean).join(" ");
108
108
  const inlineStyle = color ? colorStyles[color] : undefined;
109
109
  if (inlineStyle) {
110
- el.style.cssText = inlineStyle;
110
+ Object.assign(el.style, inlineStyle);
111
111
  }
112
112
  for (const node of resolveChildren3(children)) {
113
113
  el.appendChild(node);
@@ -382,8 +382,10 @@ function createPaginationComponent(styles) {
382
382
  prevLi.classList.add(styles.item);
383
383
  const prevBtn = document.createElement("button");
384
384
  prevBtn.setAttribute("type", "button");
385
- prevBtn.classList.add(styles.link);
386
- prevBtn.textContent = "";
385
+ prevBtn.classList.add(styles.navButton);
386
+ prevBtn.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m15 18-6-6 6-6"/></svg><span>Previous</span>';
387
+ prevBtn.style.paddingLeft = "0.375rem";
388
+ prevBtn.style.paddingRight = "0.625rem";
387
389
  prevBtn.setAttribute("aria-label", "Previous page");
388
390
  if (currentPage <= 1) {
389
391
  prevBtn.disabled = true;
@@ -400,7 +402,7 @@ function createPaginationComponent(styles) {
400
402
  const span = document.createElement("span");
401
403
  span.setAttribute("aria-hidden", "true");
402
404
  span.classList.add(styles.ellipsis);
403
- span.textContent = "";
405
+ span.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="1"/><circle cx="19" cy="12" r="1"/><circle cx="5" cy="12" r="1"/></svg>';
404
406
  li.appendChild(span);
405
407
  } else {
406
408
  const btn = document.createElement("button");
@@ -421,8 +423,10 @@ function createPaginationComponent(styles) {
421
423
  nextLi.classList.add(styles.item);
422
424
  const nextBtn = document.createElement("button");
423
425
  nextBtn.setAttribute("type", "button");
424
- nextBtn.classList.add(styles.link);
425
- nextBtn.textContent = "";
426
+ nextBtn.classList.add(styles.navButton);
427
+ nextBtn.innerHTML = '<span>Next</span><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m9 18 6-6-6-6"/></svg>';
428
+ nextBtn.style.paddingLeft = "0.625rem";
429
+ nextBtn.style.paddingRight = "0.375rem";
426
430
  nextBtn.setAttribute("aria-label", "Next page");
427
431
  if (currentPage >= totalPages) {
428
432
  nextBtn.disabled = true;
@@ -501,7 +505,9 @@ function createThemedCalendar(styles) {
501
505
  grid: styles.grid,
502
506
  headCell: styles.headCell,
503
507
  cell: styles.cell,
504
- dayButton: styles.dayButton
508
+ dayButton: styles.dayButton,
509
+ monthSelect: styles.monthSelect,
510
+ yearSelect: styles.yearSelect
505
511
  });
506
512
  return function CalendarRoot(props) {
507
513
  return StyledCalendar(props);
@@ -652,7 +658,8 @@ function createThemedDatePicker(styles, calendarClasses) {
652
658
  formatDate,
653
659
  placeholder,
654
660
  onValueChange,
655
- onOpenChange
661
+ onOpenChange,
662
+ captionLayout
656
663
  }) {
657
664
  return ComposedDatePicker({
658
665
  children,
@@ -666,6 +673,7 @@ function createThemedDatePicker(styles, calendarClasses) {
666
673
  placeholder,
667
674
  onValueChange,
668
675
  onOpenChange,
676
+ captionLayout,
669
677
  classes: {
670
678
  trigger: styles.trigger,
671
679
  content: styles.content,
@@ -694,7 +702,7 @@ function createThemedDialog(styles) {
694
702
  }
695
703
 
696
704
  // src/components/primitives/drawer.tsx
697
- import { __element, __enterChildren, __exitChildren, __insert } from "@vertz/ui/internals";
705
+ import { __discardMountFrame, __element, __enterChildren, __exitChildren, __flushMountFrame, __insert, __pushMountFrame } from "@vertz/ui/internals";
698
706
  import { resolveChildren as resolveChildren8 } from "@vertz/ui";
699
707
  import { ComposedSheet } from "@vertz/ui-primitives";
700
708
  var PANEL_CLASS_MAP = {
@@ -704,81 +712,86 @@ var PANEL_CLASS_MAP = {
704
712
  bottom: "panelBottom"
705
713
  };
706
714
  function createThemedDrawer(styles) {
707
- function DrawerRoot({ children, side, onOpenChange }) {
708
- const resolvedSide = side ?? "bottom";
709
- const panelClass = styles[PANEL_CLASS_MAP[resolvedSide]];
710
- return ComposedSheet({
711
- children,
712
- side: resolvedSide,
713
- onOpenChange,
714
- classes: {
715
- overlay: styles.overlay,
716
- content: panelClass,
717
- title: styles.title,
718
- description: styles.description,
719
- close: styles.close
720
- }
715
+ const __mfDepth = __pushMountFrame();
716
+ try {
717
+ let DrawerRoot = function({ children, side, onOpenChange }) {
718
+ const resolvedSide = side ?? "bottom";
719
+ const panelClass = styles[PANEL_CLASS_MAP[resolvedSide]];
720
+ return ComposedSheet({
721
+ children,
722
+ side: resolvedSide,
723
+ onOpenChange,
724
+ classes: {
725
+ overlay: styles.overlay,
726
+ content: panelClass,
727
+ title: styles.title,
728
+ description: styles.description,
729
+ close: styles.close
730
+ }
731
+ });
732
+ }, DrawerHeader = function({ children, className: cls, class: classProp }) {
733
+ const effectiveCls = cls ?? classProp;
734
+ const combined = [styles.header, effectiveCls].filter(Boolean).join(" ");
735
+ const resolved = resolveChildren8(children);
736
+ return (() => {
737
+ const __el0 = __element("div");
738
+ __el0.setAttribute("data-slot", "drawer-header");
739
+ {
740
+ const __v = combined;
741
+ if (__v != null && __v !== false)
742
+ __el0.setAttribute("class", __v === true ? "" : __v);
743
+ }
744
+ __enterChildren(__el0);
745
+ __insert(__el0, resolved);
746
+ __exitChildren();
747
+ return __el0;
748
+ })();
749
+ }, DrawerFooter = function({ children, className: cls, class: classProp }) {
750
+ const effectiveCls = cls ?? classProp;
751
+ const combined = [styles.footer, effectiveCls].filter(Boolean).join(" ");
752
+ const resolved = resolveChildren8(children);
753
+ return (() => {
754
+ const __el1 = __element("div");
755
+ __el1.setAttribute("data-slot", "drawer-footer");
756
+ {
757
+ const __v = combined;
758
+ if (__v != null && __v !== false)
759
+ __el1.setAttribute("class", __v === true ? "" : __v);
760
+ }
761
+ __enterChildren(__el1);
762
+ __insert(__el1, resolved);
763
+ __exitChildren();
764
+ return __el1;
765
+ })();
766
+ }, DrawerHandle = function({ className: cls, class: classProp }) {
767
+ const effectiveCls = cls ?? classProp;
768
+ const combined = [styles.handle, effectiveCls].filter(Boolean).join(" ");
769
+ return (() => {
770
+ const __el2 = __element("div");
771
+ __el2.setAttribute("data-slot", "drawer-handle");
772
+ {
773
+ const __v = combined;
774
+ if (__v != null && __v !== false)
775
+ __el2.setAttribute("class", __v === true ? "" : __v);
776
+ }
777
+ return __el2;
778
+ })();
779
+ };
780
+ const __mfResult0 = Object.assign(DrawerRoot, {
781
+ Trigger: ComposedSheet.Trigger,
782
+ Content: ComposedSheet.Content,
783
+ Header: DrawerHeader,
784
+ Title: ComposedSheet.Title,
785
+ Description: ComposedSheet.Description,
786
+ Footer: DrawerFooter,
787
+ Handle: DrawerHandle
721
788
  });
789
+ __flushMountFrame();
790
+ return __mfResult0;
791
+ } catch (__mfErr) {
792
+ __discardMountFrame(__mfDepth);
793
+ throw __mfErr;
722
794
  }
723
- function DrawerHeader({ children, className: cls, class: classProp }) {
724
- const effectiveCls = cls ?? classProp;
725
- const combined = [styles.header, effectiveCls].filter(Boolean).join(" ");
726
- const resolved = resolveChildren8(children);
727
- return (() => {
728
- const __el0 = __element("div");
729
- __el0.setAttribute("data-slot", "drawer-header");
730
- {
731
- const __v = combined;
732
- if (__v != null && __v !== false)
733
- __el0.setAttribute("class", __v === true ? "" : __v);
734
- }
735
- __enterChildren(__el0);
736
- __insert(__el0, resolved);
737
- __exitChildren();
738
- return __el0;
739
- })();
740
- }
741
- function DrawerFooter({ children, className: cls, class: classProp }) {
742
- const effectiveCls = cls ?? classProp;
743
- const combined = [styles.footer, effectiveCls].filter(Boolean).join(" ");
744
- const resolved = resolveChildren8(children);
745
- return (() => {
746
- const __el1 = __element("div");
747
- __el1.setAttribute("data-slot", "drawer-footer");
748
- {
749
- const __v = combined;
750
- if (__v != null && __v !== false)
751
- __el1.setAttribute("class", __v === true ? "" : __v);
752
- }
753
- __enterChildren(__el1);
754
- __insert(__el1, resolved);
755
- __exitChildren();
756
- return __el1;
757
- })();
758
- }
759
- function DrawerHandle({ className: cls, class: classProp }) {
760
- const effectiveCls = cls ?? classProp;
761
- const combined = [styles.handle, effectiveCls].filter(Boolean).join(" ");
762
- return (() => {
763
- const __el2 = __element("div");
764
- __el2.setAttribute("data-slot", "drawer-handle");
765
- {
766
- const __v = combined;
767
- if (__v != null && __v !== false)
768
- __el2.setAttribute("class", __v === true ? "" : __v);
769
- }
770
- return __el2;
771
- })();
772
- }
773
- return Object.assign(DrawerRoot, {
774
- Trigger: ComposedSheet.Trigger,
775
- Content: ComposedSheet.Content,
776
- Header: DrawerHeader,
777
- Title: ComposedSheet.Title,
778
- Description: ComposedSheet.Description,
779
- Footer: DrawerFooter,
780
- Handle: DrawerHandle
781
- });
782
795
  }
783
796
 
784
797
  // src/components/primitives/dropdown-menu.ts
@@ -847,7 +860,7 @@ function createThemedMenubar(styles) {
847
860
  separator: styles.separator
848
861
  });
849
862
  function MenubarRoot({ children, onSelect }) {
850
- return Styled({ children, onSelect });
863
+ return Styled({ children, onSelect, positioning: { placement: "bottom-start" } });
851
864
  }
852
865
  return Object.assign(MenubarRoot, {
853
866
  Menu: ComposedMenubar.Menu,
@@ -1472,7 +1485,7 @@ function createAlertDialogStyles() {
1472
1485
  border: "none",
1473
1486
  "container-type": "inline-size"
1474
1487
  },
1475
- "&:not([open])": { display: "none" },
1488
+ '&:not([open]):not([data-state="open"])': { display: "none" },
1476
1489
  "&::backdrop": {
1477
1490
  "background-color": "oklch(0 0 0 / 10%)",
1478
1491
  "backdrop-filter": "blur(4px)",
@@ -1623,7 +1636,14 @@ function createBreadcrumbStyles() {
1623
1636
  "items:center",
1624
1637
  "gap:1.5",
1625
1638
  "text:sm",
1626
- "text:muted-foreground"
1639
+ "text:muted-foreground",
1640
+ {
1641
+ "&": {
1642
+ "list-style": "none",
1643
+ margin: "0",
1644
+ padding: "0"
1645
+ }
1646
+ }
1627
1647
  ],
1628
1648
  breadcrumbItem: ["inline-flex", "items:center", "gap:1.5"],
1629
1649
  breadcrumbLink: ["transition:colors", "text:foreground", { "&:hover": ["text:foreground"] }],
@@ -1653,27 +1673,77 @@ var focusRing2 = {
1653
1673
  };
1654
1674
  function createCalendarStyles() {
1655
1675
  const s = css6({
1656
- calendarRoot: ["p:3"],
1657
- calendarHeader: ["flex", "items:center", "justify:between", "py:2"],
1658
- calendarTitle: ["text:sm", "font:medium"],
1676
+ calendarRoot: [
1677
+ "w:fit",
1678
+ "bg:background",
1679
+ "rounded:lg",
1680
+ "border:1",
1681
+ "border:border",
1682
+ {
1683
+ "&": {
1684
+ padding: "0.5rem"
1685
+ }
1686
+ }
1687
+ ],
1688
+ calendarHeader: [
1689
+ "flex",
1690
+ "items:center",
1691
+ "justify:between",
1692
+ {
1693
+ "&": {
1694
+ position: "relative",
1695
+ height: "1.75rem",
1696
+ width: "100%"
1697
+ },
1698
+ '&[data-caption-layout="dropdown"]': {
1699
+ "justify-content": "center",
1700
+ gap: "0.25rem"
1701
+ },
1702
+ '&[data-caption-layout="dropdown-buttons"]': {
1703
+ gap: "0.25rem"
1704
+ }
1705
+ }
1706
+ ],
1707
+ calendarTitle: [
1708
+ "text:sm",
1709
+ "font:medium",
1710
+ {
1711
+ "&": {
1712
+ position: "absolute",
1713
+ inset: "0",
1714
+ display: "flex",
1715
+ "align-items": "center",
1716
+ "justify-content": "center",
1717
+ "pointer-events": "none",
1718
+ "user-select": "none"
1719
+ }
1720
+ }
1721
+ ],
1659
1722
  calendarNavButton: [
1660
1723
  "inline-flex",
1661
1724
  "items:center",
1662
1725
  "justify:center",
1663
- "rounded:md",
1664
- "border:1",
1665
- "border:input",
1726
+ "rounded:lg",
1666
1727
  "bg:transparent",
1667
1728
  "cursor:pointer",
1668
- "transition:colors",
1669
- { "&:hover": ["bg:accent", "text:accent-foreground"] },
1729
+ "transition:all",
1730
+ { "&:hover": ["bg:muted", "text:foreground"] },
1670
1731
  focusRing2,
1671
1732
  {
1672
1733
  "&": {
1673
1734
  height: "1.75rem",
1674
- width: "1.75rem"
1735
+ width: "1.75rem",
1736
+ padding: "0",
1737
+ border: "1px solid transparent",
1738
+ "user-select": "none",
1739
+ "z-index": "1"
1740
+ },
1741
+ '& svg:not([class*="size-"])': {
1742
+ width: "1rem",
1743
+ height: "1rem"
1675
1744
  }
1676
- }
1745
+ },
1746
+ { '&[aria-disabled="true"]': ["opacity:0.5"] }
1677
1747
  ],
1678
1748
  calendarGrid: [
1679
1749
  {
@@ -1685,12 +1755,13 @@ function createCalendarStyles() {
1685
1755
  ],
1686
1756
  calendarHeadCell: [
1687
1757
  "text:muted-foreground",
1688
- "text:xs",
1689
- "font:medium",
1758
+ "font:normal",
1690
1759
  {
1691
1760
  "&": {
1692
- width: "2rem",
1693
- "text-align": "center"
1761
+ width: "1.75rem",
1762
+ "text-align": "center",
1763
+ "font-size": "0.8rem",
1764
+ "user-select": "none"
1694
1765
  }
1695
1766
  }
1696
1767
  ],
@@ -1698,7 +1769,8 @@ function createCalendarStyles() {
1698
1769
  {
1699
1770
  "&": {
1700
1771
  "text-align": "center",
1701
- padding: "0"
1772
+ padding: "0",
1773
+ "user-select": "none"
1702
1774
  }
1703
1775
  }
1704
1776
  ],
@@ -1706,24 +1778,64 @@ function createCalendarStyles() {
1706
1778
  "inline-flex",
1707
1779
  "items:center",
1708
1780
  "justify:center",
1709
- "rounded:md",
1781
+ "rounded:lg",
1710
1782
  "text:sm",
1783
+ "font:normal",
1711
1784
  "bg:transparent",
1712
1785
  "cursor:pointer",
1713
- "transition:colors",
1786
+ "transition:all",
1714
1787
  focusRing2,
1715
1788
  {
1716
1789
  "&": {
1717
- height: "2rem",
1718
- width: "2rem"
1790
+ height: "1.75rem",
1791
+ width: "1.75rem",
1792
+ border: "1px solid transparent",
1793
+ padding: "0"
1719
1794
  }
1720
1795
  },
1721
- { "&:hover": ["bg:accent", "text:accent-foreground"] },
1796
+ { "&:hover": ["bg:muted", "text:foreground"] },
1722
1797
  { '&[aria-selected="true"]': ["bg:primary", "text:primary-foreground"] },
1723
- { '&[data-today="true"]': ["border:1", "border:accent"] },
1724
- { '&[aria-disabled="true"]': ["opacity:0.5", "pointer-events-none"] },
1725
- { '&[data-outside-month="true"]': ["text:muted-foreground", "opacity:0.5"] },
1726
- { '&[data-in-range="true"]': ["bg:accent"] }
1798
+ {
1799
+ '&[data-today="true"]': ["bg:muted", "text:foreground"]
1800
+ },
1801
+ {
1802
+ '&[data-today="true"][aria-selected="true"]': ["bg:primary", "text:primary-foreground"]
1803
+ },
1804
+ {
1805
+ '&[aria-disabled="true"]': ["text:muted-foreground", "opacity:0.5", "pointer-events-none"]
1806
+ },
1807
+ {
1808
+ '&[data-outside-month="true"]': ["text:muted-foreground"]
1809
+ },
1810
+ { '&[data-in-range="true"]': ["bg:muted", "text:foreground"] }
1811
+ ],
1812
+ calendarMonthSelect: [
1813
+ "text:sm",
1814
+ "font:medium",
1815
+ "bg:transparent",
1816
+ "cursor:pointer",
1817
+ focusRing2,
1818
+ {
1819
+ "&": {
1820
+ border: "none",
1821
+ "padding-inline": "0.25rem",
1822
+ appearance: "auto"
1823
+ }
1824
+ }
1825
+ ],
1826
+ calendarYearSelect: [
1827
+ "text:sm",
1828
+ "font:medium",
1829
+ "bg:transparent",
1830
+ "cursor:pointer",
1831
+ focusRing2,
1832
+ {
1833
+ "&": {
1834
+ border: "none",
1835
+ "padding-inline": "0.25rem",
1836
+ appearance: "auto"
1837
+ }
1838
+ }
1727
1839
  ]
1728
1840
  });
1729
1841
  return {
@@ -1735,6 +1847,8 @@ function createCalendarStyles() {
1735
1847
  headCell: s.calendarHeadCell,
1736
1848
  cell: s.calendarCell,
1737
1849
  dayButton: s.calendarDayButton,
1850
+ monthSelect: s.calendarMonthSelect,
1851
+ yearSelect: s.calendarYearSelect,
1738
1852
  css: s.css
1739
1853
  };
1740
1854
  }
@@ -1802,19 +1916,10 @@ function createCard() {
1802
1916
  import { css as css8 } from "@vertz/ui";
1803
1917
  function createCarouselStyles() {
1804
1918
  const s = css8({
1805
- carouselRoot: ["relative", "overflow-hidden"],
1919
+ carouselRoot: ["relative"],
1806
1920
  carouselViewport: ["overflow-hidden"],
1807
1921
  carouselSlide: [
1808
- "shrink-0",
1809
- {
1810
- "&": {
1811
- "min-width": "0",
1812
- "flex-grow": "0",
1813
- "flex-basis": "100%"
1814
- }
1815
- },
1816
- { '&[data-state="inactive"]': ["opacity:0"] },
1817
- { '&[data-state="active"]': ["opacity:1"] }
1922
+ { '&[data-state="inactive"]': [{ display: "none" }] }
1818
1923
  ],
1819
1924
  carouselPrevButton: [
1820
1925
  "absolute",
@@ -1908,10 +2013,35 @@ function createCheckboxStyles() {
1908
2013
  }
1909
2014
  ],
1910
2015
  checkboxIndicator: [
2016
+ "relative",
1911
2017
  "flex",
1912
2018
  "items:center",
1913
2019
  "justify:center",
1914
- { '&[data-state="unchecked"]': ["hidden"] }
2020
+ {
2021
+ '& [data-part="indicator-icon"]': {
2022
+ position: "absolute",
2023
+ inset: "0",
2024
+ opacity: "0",
2025
+ transform: "scale(0.5)",
2026
+ transition: "opacity 150ms cubic-bezier(0.4, 0, 0.2, 1), " + "transform 150ms cubic-bezier(0.4, 0, 0.2, 1)"
2027
+ },
2028
+ '& [data-icon="check"] path': {
2029
+ "stroke-dasharray": "30",
2030
+ "stroke-dashoffset": "30",
2031
+ transition: "stroke-dashoffset 200ms cubic-bezier(0.4, 0, 0.2, 1) 50ms"
2032
+ },
2033
+ '&[data-state="checked"] [data-icon="check"]': {
2034
+ opacity: "1",
2035
+ transform: "scale(1)"
2036
+ },
2037
+ '&[data-state="checked"] [data-icon="check"] path': {
2038
+ "stroke-dashoffset": "0"
2039
+ },
2040
+ '&[data-state="indeterminate"] [data-icon="minus"]': {
2041
+ opacity: "1",
2042
+ transform: "scale(1)"
2043
+ }
2044
+ }
1915
2045
  ]
1916
2046
  });
1917
2047
  return {
@@ -1982,7 +2112,9 @@ function createCommandStyles() {
1982
2112
  focusRing4
1983
2113
  ],
1984
2114
  commandList: [
1985
- "p:1",
2115
+ "px:1",
2116
+ "pb:1",
2117
+ "pt:2",
1986
2118
  {
1987
2119
  "&": {
1988
2120
  "max-height": "300px",
@@ -2053,11 +2185,15 @@ function createContextMenuStyles() {
2053
2185
  "overflow-hidden",
2054
2186
  "bg:popover",
2055
2187
  "text:popover-foreground",
2056
- "rounded:md",
2057
- "border:1",
2058
- "border:border",
2059
- "shadow:md",
2060
- "py:1",
2188
+ "rounded:lg",
2189
+ "w:fit",
2190
+ "p:1",
2191
+ {
2192
+ "&": {
2193
+ "box-shadow": "0 0 0 1px color-mix(in oklch, var(--color-foreground) 10%, transparent), 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
2194
+ "min-width": "8rem"
2195
+ }
2196
+ },
2061
2197
  {
2062
2198
  '&[data-state="open"]': [animationDecl("vz-zoom-in 150ms ease-out forwards")]
2063
2199
  },
@@ -2068,19 +2204,30 @@ function createContextMenuStyles() {
2068
2204
  cmItem: [
2069
2205
  "flex",
2070
2206
  "items:center",
2071
- "px:2",
2072
- "py:1.5",
2207
+ "gap:1.5",
2208
+ "px:1.5",
2209
+ "py:1",
2073
2210
  "text:sm",
2074
2211
  "cursor:pointer",
2075
- "rounded:sm",
2212
+ "rounded:md",
2076
2213
  "outline-none",
2077
2214
  { "&:hover": ["bg:accent", "text:accent-foreground"] },
2078
2215
  { "&:focus": ["bg:accent", "text:accent-foreground"] },
2079
2216
  { "&[data-disabled]": ["pointer-events-none", "opacity:0.5"] }
2080
2217
  ],
2081
2218
  cmGroup: ["py:1"],
2082
- cmLabel: ["px:2", "py:1.5", "text:xs", "font:semibold", "text:muted-foreground"],
2083
- cmSeparator: ["mx:1", "my:1", "border-t:1", "border:muted", { "&": { height: "1px" } }]
2219
+ cmLabel: ["px:1.5", "py:1", "text:xs", "font:medium", "text:muted-foreground"],
2220
+ cmSeparator: [
2221
+ "my:1",
2222
+ "bg:border",
2223
+ {
2224
+ "&": {
2225
+ "margin-left": "-0.25rem",
2226
+ "margin-right": "-0.25rem",
2227
+ height: "1px"
2228
+ }
2229
+ }
2230
+ ]
2084
2231
  });
2085
2232
  return {
2086
2233
  content: s.cmContent,
@@ -2192,7 +2339,7 @@ function createDialogStyles() {
2192
2339
  border: "none",
2193
2340
  "container-type": "inline-size"
2194
2341
  },
2195
- "&:not([open])": { display: "none" },
2342
+ '&:not([open]):not([data-state="open"])': { display: "none" },
2196
2343
  "&::backdrop": {
2197
2344
  "background-color": "oklch(0 0 0 / 10%)",
2198
2345
  "backdrop-filter": "blur(4px)",
@@ -2331,7 +2478,22 @@ function createDrawerStyles() {
2331
2478
  inset: "0 auto 0 0",
2332
2479
  width: "75%",
2333
2480
  "max-width": "24rem",
2481
+ height: "100dvh",
2482
+ "max-height": "none",
2483
+ margin: "0",
2484
+ outline: "none",
2485
+ border: "none",
2334
2486
  "border-radius": "0 0.75rem 0.75rem 0"
2487
+ },
2488
+ '&:not([open]):not([data-state="open"])': { display: "none" },
2489
+ "&::backdrop": {
2490
+ "background-color": "oklch(0 0 0 / 50%)"
2491
+ },
2492
+ '&[data-state="open"]::backdrop': {
2493
+ animation: "vz-fade-in 150ms ease-out forwards"
2494
+ },
2495
+ '&[data-state="closed"]::backdrop': {
2496
+ animation: "vz-fade-out 300ms ease-out forwards"
2335
2497
  }
2336
2498
  },
2337
2499
  {
@@ -2349,7 +2511,22 @@ function createDrawerStyles() {
2349
2511
  inset: "0 0 0 auto",
2350
2512
  width: "75%",
2351
2513
  "max-width": "24rem",
2514
+ height: "100dvh",
2515
+ "max-height": "none",
2516
+ margin: "0",
2517
+ outline: "none",
2518
+ border: "none",
2352
2519
  "border-radius": "0.75rem 0 0 0.75rem"
2520
+ },
2521
+ '&:not([open]):not([data-state="open"])': { display: "none" },
2522
+ "&::backdrop": {
2523
+ "background-color": "oklch(0 0 0 / 50%)"
2524
+ },
2525
+ '&[data-state="open"]::backdrop': {
2526
+ animation: "vz-fade-in 150ms ease-out forwards"
2527
+ },
2528
+ '&[data-state="closed"]::backdrop': {
2529
+ animation: "vz-fade-out 300ms ease-out forwards"
2353
2530
  }
2354
2531
  },
2355
2532
  {
@@ -2365,7 +2542,22 @@ function createDrawerStyles() {
2365
2542
  {
2366
2543
  "&": {
2367
2544
  inset: "0 0 auto 0",
2545
+ width: "100dvw",
2546
+ "max-width": "none",
2547
+ margin: "0",
2548
+ outline: "none",
2549
+ border: "none",
2368
2550
  "border-radius": "0 0 0.75rem 0.75rem"
2551
+ },
2552
+ '&:not([open]):not([data-state="open"])': { display: "none" },
2553
+ "&::backdrop": {
2554
+ "background-color": "oklch(0 0 0 / 50%)"
2555
+ },
2556
+ '&[data-state="open"]::backdrop': {
2557
+ animation: "vz-fade-in 150ms ease-out forwards"
2558
+ },
2559
+ '&[data-state="closed"]::backdrop': {
2560
+ animation: "vz-fade-out 300ms ease-out forwards"
2369
2561
  }
2370
2562
  },
2371
2563
  {
@@ -2381,7 +2573,22 @@ function createDrawerStyles() {
2381
2573
  {
2382
2574
  "&": {
2383
2575
  inset: "auto 0 0 0",
2576
+ width: "100dvw",
2577
+ "max-width": "none",
2578
+ margin: "0",
2579
+ outline: "none",
2580
+ border: "none",
2384
2581
  "border-radius": "0.75rem 0.75rem 0 0"
2582
+ },
2583
+ '&:not([open]):not([data-state="open"])': { display: "none" },
2584
+ "&::backdrop": {
2585
+ "background-color": "oklch(0 0 0 / 50%)"
2586
+ },
2587
+ '&[data-state="open"]::backdrop': {
2588
+ animation: "vz-fade-in 150ms ease-out forwards"
2589
+ },
2590
+ '&[data-state="closed"]::backdrop': {
2591
+ animation: "vz-fade-out 300ms ease-out forwards"
2385
2592
  }
2386
2593
  },
2387
2594
  {
@@ -2526,21 +2733,26 @@ function createHoverCardStyles() {
2526
2733
  const s = css18({
2527
2734
  hoverCardContent: [
2528
2735
  "z:50",
2529
- "rounded:md",
2736
+ "rounded:lg",
2530
2737
  "border:1",
2531
2738
  "border:border",
2532
2739
  "bg:popover",
2533
2740
  "text:popover-foreground",
2534
2741
  "shadow:md",
2742
+ "outline-none",
2535
2743
  "p:4",
2536
2744
  {
2537
2745
  "&": { width: "16rem" }
2538
2746
  },
2539
2747
  {
2540
- '&[data-state="open"]': [animationDecl("vz-fade-in 150ms ease-out forwards")]
2748
+ '&[data-state="open"]': [
2749
+ animationDecl("vz-fade-in 150ms ease-out forwards, vz-zoom-in 150ms ease-out forwards")
2750
+ ]
2541
2751
  },
2542
2752
  {
2543
- '&[data-state="closed"]': [animationDecl("vz-fade-out 150ms ease-out forwards")]
2753
+ '&[data-state="closed"]': [
2754
+ animationDecl("vz-fade-out 150ms ease-out forwards, vz-zoom-out 150ms ease-out forwards")
2755
+ ]
2544
2756
  }
2545
2757
  ]
2546
2758
  });
@@ -2783,43 +2995,111 @@ var focusRing8 = {
2783
2995
  };
2784
2996
  function createPaginationStyles() {
2785
2997
  const s = css23({
2786
- paginationNav: [],
2787
- paginationList: ["flex", "flex-wrap", "items:center", "gap:1"],
2998
+ paginationNav: [
2999
+ "flex",
3000
+ "justify:center",
3001
+ {
3002
+ "&": {
3003
+ "margin-left": "auto",
3004
+ "margin-right": "auto",
3005
+ width: "100%"
3006
+ }
3007
+ }
3008
+ ],
3009
+ paginationList: [
3010
+ "flex",
3011
+ "items:center",
3012
+ {
3013
+ "&": {
3014
+ gap: "0.125rem",
3015
+ "list-style": "none",
3016
+ margin: "0",
3017
+ padding: "0"
3018
+ }
3019
+ }
3020
+ ],
2788
3021
  paginationItem: [],
2789
3022
  paginationLink: [
2790
3023
  "inline-flex",
2791
3024
  "items:center",
2792
3025
  "justify:center",
2793
- "rounded:md",
3026
+ "rounded:lg",
2794
3027
  "text:sm",
2795
3028
  "font:medium",
2796
- "h:9",
2797
- "w:9",
2798
- "border:1",
2799
- "border:input",
2800
- "bg:background",
3029
+ "bg:transparent",
2801
3030
  "cursor:pointer",
2802
- "transition:colors",
3031
+ "transition:all",
2803
3032
  focusRing8,
2804
- { "&:hover": ["bg:accent", "text:accent-foreground"] },
3033
+ {
3034
+ "&": {
3035
+ height: "2rem",
3036
+ width: "2rem",
3037
+ border: "1px solid transparent",
3038
+ "white-space": "nowrap"
3039
+ }
3040
+ },
3041
+ { "&:hover": ["bg:muted", "text:foreground"] },
2805
3042
  { "&:disabled": ["pointer-events-none", "opacity:0.5"] }
2806
3043
  ],
2807
3044
  paginationLinkActive: [
2808
3045
  "inline-flex",
2809
3046
  "items:center",
2810
3047
  "justify:center",
2811
- "rounded:md",
3048
+ "rounded:lg",
2812
3049
  "text:sm",
2813
3050
  "font:medium",
2814
- "h:9",
2815
- "w:9",
2816
- "bg:primary",
2817
- "text:primary-foreground",
2818
3051
  "border:1",
2819
- "border:primary",
2820
- focusRing8
3052
+ "border:border",
3053
+ "bg:background",
3054
+ "cursor:pointer",
3055
+ focusRing8,
3056
+ {
3057
+ "&": {
3058
+ height: "2rem",
3059
+ width: "2rem"
3060
+ }
3061
+ },
3062
+ { "&:hover": ["bg:muted", "text:foreground"] }
3063
+ ],
3064
+ paginationNavButton: [
3065
+ "inline-flex",
3066
+ "items:center",
3067
+ "justify:center",
3068
+ "rounded:lg",
3069
+ "text:sm",
3070
+ "font:medium",
3071
+ "bg:transparent",
3072
+ "cursor:pointer",
3073
+ "transition:all",
3074
+ focusRing8,
3075
+ {
3076
+ "&": {
3077
+ height: "2rem",
3078
+ border: "1px solid transparent",
3079
+ "white-space": "nowrap",
3080
+ gap: "0.375rem",
3081
+ "padding-left": "0.375rem",
3082
+ "padding-right": "0.625rem"
3083
+ }
3084
+ },
3085
+ { "&:hover": ["bg:muted", "text:foreground"] },
3086
+ { "&:disabled": ["pointer-events-none", "opacity:0.5"] }
2821
3087
  ],
2822
- paginationEllipsis: ["inline-flex", "items:center", "justify:center", "h:9", "w:9", "text:sm"]
3088
+ paginationEllipsis: [
3089
+ "inline-flex",
3090
+ "items:center",
3091
+ "justify:center",
3092
+ {
3093
+ "&": {
3094
+ height: "2rem",
3095
+ width: "2rem"
3096
+ },
3097
+ '& svg:not([class*="size-"])': {
3098
+ width: "1rem",
3099
+ height: "1rem"
3100
+ }
3101
+ }
3102
+ ]
2823
3103
  });
2824
3104
  return {
2825
3105
  nav: s.paginationNav,
@@ -2827,6 +3107,7 @@ function createPaginationStyles() {
2827
3107
  item: s.paginationItem,
2828
3108
  link: s.paginationLink,
2829
3109
  linkActive: s.paginationLinkActive,
3110
+ navButton: s.paginationNavButton,
2830
3111
  ellipsis: s.paginationEllipsis,
2831
3112
  css: s.css
2832
3113
  };
@@ -2975,7 +3256,7 @@ var focusRing10 = {
2975
3256
  function createResizablePanelStyles() {
2976
3257
  const s = css27({
2977
3258
  resizableRoot: ["flex", "h:full", "w:full"],
2978
- resizablePanel: ["overflow-hidden"],
3259
+ resizablePanel: ["overflow-hidden", { "&": [{ "white-space": "nowrap" }] }],
2979
3260
  resizableHandle: [
2980
3261
  "relative",
2981
3262
  "flex",
@@ -3111,21 +3392,21 @@ function createSelectStyles() {
3111
3392
  },
3112
3393
  {
3113
3394
  '&[data-state="open"][data-side="bottom"]': [
3114
- animationDecl("vz-slide-down-in 100ms ease-out forwards")
3395
+ animationDecl("vz-slide-in-from-top 150ms ease-out forwards")
3115
3396
  ]
3116
3397
  },
3117
3398
  {
3118
3399
  '&[data-state="open"][data-side="top"]': [
3119
- animationDecl("vz-slide-up-in 100ms ease-out forwards")
3400
+ animationDecl("vz-slide-in-from-bottom 150ms ease-out forwards")
3120
3401
  ]
3121
3402
  },
3122
3403
  {
3123
3404
  '&[data-state="open"]:not([data-side])': [
3124
- animationDecl("vz-zoom-in 100ms ease-out forwards")
3405
+ animationDecl("vz-zoom-in 150ms ease-out forwards")
3125
3406
  ]
3126
3407
  },
3127
3408
  {
3128
- '&[data-state="closed"]': [animationDecl("vz-zoom-out 100ms ease-out forwards")]
3409
+ '&[data-state="closed"]': [animationDecl("vz-zoom-out 150ms ease-out forwards")]
3129
3410
  }
3130
3411
  ],
3131
3412
  selectItem: [
@@ -3273,7 +3554,7 @@ function createSheetStyles() {
3273
3554
  outline: "none",
3274
3555
  border: "none"
3275
3556
  },
3276
- "&:not([open])": { display: "none" },
3557
+ '&:not([open]):not([data-state="open"])': { display: "none" },
3277
3558
  "&::backdrop": {
3278
3559
  "background-color": "oklch(0 0 0 / 10%)",
3279
3560
  "backdrop-filter": "blur(4px)",
@@ -3307,7 +3588,7 @@ function createSheetStyles() {
3307
3588
  outline: "none",
3308
3589
  border: "none"
3309
3590
  },
3310
- "&:not([open])": { display: "none" },
3591
+ '&:not([open]):not([data-state="open"])': { display: "none" },
3311
3592
  "&::backdrop": {
3312
3593
  "background-color": "oklch(0 0 0 / 10%)",
3313
3594
  "backdrop-filter": "blur(4px)",
@@ -3339,7 +3620,7 @@ function createSheetStyles() {
3339
3620
  outline: "none",
3340
3621
  border: "none"
3341
3622
  },
3342
- "&:not([open])": { display: "none" },
3623
+ '&:not([open]):not([data-state="open"])': { display: "none" },
3343
3624
  "&::backdrop": {
3344
3625
  "background-color": "oklch(0 0 0 / 10%)",
3345
3626
  "backdrop-filter": "blur(4px)",
@@ -3371,7 +3652,7 @@ function createSheetStyles() {
3371
3652
  outline: "none",
3372
3653
  border: "none"
3373
3654
  },
3374
- "&:not([open])": { display: "none" },
3655
+ '&:not([open]):not([data-state="open"])': { display: "none" },
3375
3656
  "&::backdrop": {
3376
3657
  "background-color": "oklch(0 0 0 / 10%)",
3377
3658
  "backdrop-filter": "blur(4px)",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vertz/theme-shadcn",
3
- "version": "0.2.22",
3
+ "version": "0.2.23",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Shadcn-inspired theme for Vertz — pre-built style definitions using variants() and css()",
@@ -39,12 +39,12 @@
39
39
  "typecheck": "tsc --noEmit"
40
40
  },
41
41
  "dependencies": {
42
- "@vertz/ui": "^0.2.21",
43
- "@vertz/ui-primitives": "^0.2.21"
42
+ "@vertz/ui": "^0.2.22",
43
+ "@vertz/ui-primitives": "^0.2.22"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@happy-dom/global-registrator": "^20.7.0",
47
- "@vertz/ui-compiler": "^0.2.21",
47
+ "@vertz/ui-compiler": "^0.2.22",
48
48
  "bunup": "^0.16.31",
49
49
  "happy-dom": "^20.7.0",
50
50
  "typescript": "^5.7.0"