@a4ui/core 0.26.0 → 0.28.0

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/README.md CHANGED
@@ -186,17 +186,17 @@ mode switch — a theme recolors underneath either mode.
186
186
  **[docs site](https://a4ui.pages.dev/)** or `src/index.ts` for the
187
187
  full list):
188
188
 
189
- | Category | Representative components |
190
- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
191
- | Forms | `Input`, `Select`, `Checkbox`, `DateField`, `Combobox`, `TagInput`, `Slider`, `NumberInput`, `PromptComposer`, `InlineSelect`, `PillSearch` |
192
- | Overlays | `Modal`, `Drawer`, `Popover`, `Tooltip`, `AlertDialog`, `ContextMenu`, `HoverCard` |
193
- | Data & display | `Table`, `DataGrid`, `Tree`, `Calendar`, `Timeline`, `Stat`, `Descriptions`, `SpecSheet`, `RatingsSummary`, `LogoWall`, `ChatThread`, `Message`, `Citation`, `CodeTabs`, `CalendarHeatmap` |
194
- | Navigation | `Tabs`, `Breadcrumb`, `Pagination`, `Command`, `Anchor`, `Stepper`, `BottomNavigation`, `CategoryStrip` |
195
- | Feedback | `Alert`, `AnnouncementBar`, `Toast`, `Progress`, `Skeleton`, `Empty`, `Result`, `NotificationCenter` |
196
- | Layout | `AppShell`, `SpaceBackground`, `ThemedScenery`, `Card`, `Splitter`, `Affix`, `NavGroup`, `FloatingToolbar`, `ArtifactPanel`, `MasterDetail` |
197
- | Commerce | `ProductCard`, `ProductGrid`, `PriceTag`, `PriceBlock`, `QuantityStepper`, `CartLine`, `CartSummary`, `FilterGroup`, `FacetSidebar`, `ConditionScale` |
198
- | Charts | `Sparkline`, `BarChart`, `DonutChart` (native SVG, theme-tinted) |
199
- | Motion | `ScrambleText`, `TextReveal`, `Typewriter`, `GradientText`, `HoldToConfirm`, `LoadingDots`, `FillText`, `Curtain`, `Parallax`, `ScrollProgress`, `Ripple`, `Magnetic`, `TiltCard`, `Spotlight`, `NotificationStack`, `MultiStateBadge`, `NowPlaying`, `Expandable`, `StreamingText`, `PageTransition`, `flyToCart` |
189
+ | Category | Representative components |
190
+ | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
191
+ | Forms | `Input`, `Select`, `Checkbox`, `DateField`, `Combobox`, `TagInput`, `Slider`, `NumberInput`, `PromptComposer`, `InlineSelect`, `PillSearch` |
192
+ | Overlays | `Modal`, `Drawer`, `Popover`, `Tooltip`, `AlertDialog`, `ContextMenu`, `HoverCard`, `SlashMenu` |
193
+ | Data & display | `Table`, `DataGrid`, `Tree`, `Calendar`, `Timeline`, `Stat`, `Descriptions`, `SpecSheet`, `RatingsSummary`, `LogoWall`, `ChatThread`, `Message`, `Citation`, `CodeTabs`, `DataView`, `BalanceCard`, `TransactionFeed`, `KpiBlock`, `CalendarHeatmap` |
194
+ | Navigation | `Tabs`, `Breadcrumb`, `Pagination`, `Command`, `Anchor`, `Stepper`, `BottomNavigation`, `CategoryStrip`, `Spaces`, `SideRail` |
195
+ | Feedback | `Alert`, `AnnouncementBar`, `Toast`, `Progress`, `Skeleton`, `Empty`, `Result`, `NotificationCenter` |
196
+ | Layout | `AppShell`, `SpaceBackground`, `ThemedScenery`, `Card`, `Splitter`, `Affix`, `NavGroup`, `FloatingToolbar`, `ArtifactPanel`, `MasterDetail` |
197
+ | Commerce | `ProductCard`, `ProductGrid`, `PriceTag`, `PriceBlock`, `QuantityStepper`, `CartLine`, `CartSummary`, `FilterGroup`, `FacetSidebar`, `ConditionScale` |
198
+ | Charts | `Sparkline`, `BarChart`, `DonutChart` (native SVG, theme-tinted) |
199
+ | Motion | `ScrambleText`, `TextReveal`, `Typewriter`, `GradientText`, `HoldToConfirm`, `LoadingDots`, `FillText`, `Curtain`, `Parallax`, `ScrollProgress`, `Ripple`, `Magnetic`, `TiltCard`, `Spotlight`, `NotificationStack`, `MultiStateBadge`, `NowPlaying`, `Expandable`, `StreamingText`, `PageTransition`, `ScrollScene`, `StickyReveal`, `flyToCart` |
200
200
 
201
201
  Domain-specific sets ship as **subpath entries** so the base package stays lean —
202
202
  e.g. commerce and chart components import from their own paths:
package/dist/elements.css CHANGED
@@ -1481,6 +1481,17 @@ html.calm .tile-glass {
1481
1481
  background: hsl(var(--card) / 0.97);
1482
1482
  }
1483
1483
  }
1484
+ .sr-only {
1485
+ position: absolute;
1486
+ width: 1px;
1487
+ height: 1px;
1488
+ padding: 0;
1489
+ margin: -1px;
1490
+ overflow: hidden;
1491
+ clip: rect(0, 0, 0, 0);
1492
+ white-space: nowrap;
1493
+ border-width: 0;
1494
+ }
1484
1495
  .pointer-events-none {
1485
1496
  pointer-events: none;
1486
1497
  }
@@ -1508,6 +1519,9 @@ html.calm .tile-glass {
1508
1519
  .sticky {
1509
1520
  position: sticky;
1510
1521
  }
1522
+ .-inset-\[15\%\] {
1523
+ inset: -15%;
1524
+ }
1511
1525
  .inset-0 {
1512
1526
  inset: 0px;
1513
1527
  }
@@ -1519,6 +1533,10 @@ html.calm .tile-glass {
1519
1533
  top: 0px;
1520
1534
  bottom: 0px;
1521
1535
  }
1536
+ .inset-y-1 {
1537
+ top: 0.25rem;
1538
+ bottom: 0.25rem;
1539
+ }
1522
1540
  .-bottom-6 {
1523
1541
  bottom: -1.5rem;
1524
1542
  }
@@ -1528,6 +1546,9 @@ html.calm .tile-glass {
1528
1546
  .-right-1 {
1529
1547
  right: -0.25rem;
1530
1548
  }
1549
+ .-right-2 {
1550
+ right: -0.5rem;
1551
+ }
1531
1552
  .-right-32 {
1532
1553
  right: -8rem;
1533
1554
  }
@@ -1540,6 +1561,9 @@ html.calm .tile-glass {
1540
1561
  .-top-1\.5 {
1541
1562
  top: -0.375rem;
1542
1563
  }
1564
+ .-top-2 {
1565
+ top: -0.5rem;
1566
+ }
1543
1567
  .-top-3 {
1544
1568
  top: -0.75rem;
1545
1569
  }
@@ -1860,6 +1884,9 @@ html.calm .tile-glass {
1860
1884
  .h-px {
1861
1885
  height: 1px;
1862
1886
  }
1887
+ .h-screen {
1888
+ height: 100vh;
1889
+ }
1863
1890
  .max-h-10 {
1864
1891
  max-height: 2.5rem;
1865
1892
  }
@@ -1875,6 +1902,9 @@ html.calm .tile-glass {
1875
1902
  .max-h-64 {
1876
1903
  max-height: 16rem;
1877
1904
  }
1905
+ .max-h-72 {
1906
+ max-height: 18rem;
1907
+ }
1878
1908
  .max-h-80 {
1879
1909
  max-height: 20rem;
1880
1910
  }
@@ -1935,6 +1965,9 @@ html.calm .tile-glass {
1935
1965
  .w-2 {
1936
1966
  width: 0.5rem;
1937
1967
  }
1968
+ .w-20 {
1969
+ width: 5rem;
1970
+ }
1938
1971
  .w-3 {
1939
1972
  width: 0.75rem;
1940
1973
  }
@@ -2031,6 +2064,9 @@ html.calm .tile-glass {
2031
2064
  .min-w-56 {
2032
2065
  min-width: 14rem;
2033
2066
  }
2067
+ .min-w-64 {
2068
+ min-width: 16rem;
2069
+ }
2034
2070
  .min-w-\[1\.1em\] {
2035
2071
  min-width: 1.1em;
2036
2072
  }
@@ -2687,6 +2723,9 @@ html.calm .tile-glass {
2687
2723
  .p-1 {
2688
2724
  padding: 0.25rem;
2689
2725
  }
2726
+ .p-10 {
2727
+ padding: 2.5rem;
2728
+ }
2690
2729
  .p-2 {
2691
2730
  padding: 0.5rem;
2692
2731
  }
@@ -2773,6 +2812,10 @@ html.calm .tile-glass {
2773
2812
  padding-top: 0.5rem;
2774
2813
  padding-bottom: 0.5rem;
2775
2814
  }
2815
+ .py-2\.5 {
2816
+ padding-top: 0.625rem;
2817
+ padding-bottom: 0.625rem;
2818
+ }
2776
2819
  .py-20 {
2777
2820
  padding-top: 5rem;
2778
2821
  padding-bottom: 5rem;
@@ -2991,6 +3034,10 @@ html.calm .tile-glass {
2991
3034
  --tw-text-opacity: 1;
2992
3035
  color: rgb(110 231 183 / var(--tw-text-opacity, 1));
2993
3036
  }
3037
+ .text-emerald-400 {
3038
+ --tw-text-opacity: 1;
3039
+ color: rgb(52 211 153 / var(--tw-text-opacity, 1));
3040
+ }
2994
3041
  .text-emerald-500 {
2995
3042
  --tw-text-opacity: 1;
2996
3043
  color: rgb(16 185 129 / var(--tw-text-opacity, 1));
@@ -3077,6 +3124,9 @@ html.calm .tile-glass {
3077
3124
  .opacity-0 {
3078
3125
  opacity: 0;
3079
3126
  }
3127
+ .opacity-100 {
3128
+ opacity: 1;
3129
+ }
3080
3130
  .opacity-25 {
3081
3131
  opacity: 0.25;
3082
3132
  }
@@ -3183,6 +3233,10 @@ html.calm .tile-glass {
3183
3233
  --tw-blur: blur(8px);
3184
3234
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
3185
3235
  }
3236
+ .blur-2xl {
3237
+ --tw-blur: blur(40px);
3238
+ filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
3239
+ }
3186
3240
  .blur-3xl {
3187
3241
  --tw-blur: blur(64px);
3188
3242
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
@@ -3520,6 +3574,11 @@ html.calm .tile-glass {
3520
3574
  --tw-scale-y: 0.97;
3521
3575
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
3522
3576
  }
3577
+ .active\:scale-\[0\.98\]:active {
3578
+ --tw-scale-x: 0.98;
3579
+ --tw-scale-y: 0.98;
3580
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
3581
+ }
3523
3582
  .active\:cursor-grabbing:active {
3524
3583
  cursor: grabbing;
3525
3584
  }
@@ -3631,6 +3690,17 @@ html.calm .tile-glass {
3631
3690
  }
3632
3691
  @media (min-width: 640px) {
3633
3692
 
3693
+ .sm\:not-sr-only {
3694
+ position: static;
3695
+ width: auto;
3696
+ height: auto;
3697
+ padding: 0;
3698
+ margin: 0;
3699
+ overflow: visible;
3700
+ clip: auto;
3701
+ white-space: normal;
3702
+ }
3703
+
3634
3704
  .sm\:block {
3635
3705
  display: block;
3636
3706
  }
package/dist/full.css CHANGED
@@ -1481,6 +1481,17 @@ html.calm .tile-glass {
1481
1481
  background: hsl(var(--card) / 0.97);
1482
1482
  }
1483
1483
  }
1484
+ .sr-only {
1485
+ position: absolute;
1486
+ width: 1px;
1487
+ height: 1px;
1488
+ padding: 0;
1489
+ margin: -1px;
1490
+ overflow: hidden;
1491
+ clip: rect(0, 0, 0, 0);
1492
+ white-space: nowrap;
1493
+ border-width: 0;
1494
+ }
1484
1495
  .pointer-events-none {
1485
1496
  pointer-events: none;
1486
1497
  }
@@ -1508,6 +1519,9 @@ html.calm .tile-glass {
1508
1519
  .sticky {
1509
1520
  position: sticky;
1510
1521
  }
1522
+ .-inset-\[15\%\] {
1523
+ inset: -15%;
1524
+ }
1511
1525
  .inset-0 {
1512
1526
  inset: 0px;
1513
1527
  }
@@ -1519,6 +1533,10 @@ html.calm .tile-glass {
1519
1533
  top: 0px;
1520
1534
  bottom: 0px;
1521
1535
  }
1536
+ .inset-y-1 {
1537
+ top: 0.25rem;
1538
+ bottom: 0.25rem;
1539
+ }
1522
1540
  .-bottom-6 {
1523
1541
  bottom: -1.5rem;
1524
1542
  }
@@ -1528,6 +1546,9 @@ html.calm .tile-glass {
1528
1546
  .-right-1 {
1529
1547
  right: -0.25rem;
1530
1548
  }
1549
+ .-right-2 {
1550
+ right: -0.5rem;
1551
+ }
1531
1552
  .-right-32 {
1532
1553
  right: -8rem;
1533
1554
  }
@@ -1540,6 +1561,9 @@ html.calm .tile-glass {
1540
1561
  .-top-1\.5 {
1541
1562
  top: -0.375rem;
1542
1563
  }
1564
+ .-top-2 {
1565
+ top: -0.5rem;
1566
+ }
1543
1567
  .-top-3 {
1544
1568
  top: -0.75rem;
1545
1569
  }
@@ -1860,6 +1884,9 @@ html.calm .tile-glass {
1860
1884
  .h-px {
1861
1885
  height: 1px;
1862
1886
  }
1887
+ .h-screen {
1888
+ height: 100vh;
1889
+ }
1863
1890
  .max-h-10 {
1864
1891
  max-height: 2.5rem;
1865
1892
  }
@@ -1875,6 +1902,9 @@ html.calm .tile-glass {
1875
1902
  .max-h-64 {
1876
1903
  max-height: 16rem;
1877
1904
  }
1905
+ .max-h-72 {
1906
+ max-height: 18rem;
1907
+ }
1878
1908
  .max-h-80 {
1879
1909
  max-height: 20rem;
1880
1910
  }
@@ -1935,6 +1965,9 @@ html.calm .tile-glass {
1935
1965
  .w-2 {
1936
1966
  width: 0.5rem;
1937
1967
  }
1968
+ .w-20 {
1969
+ width: 5rem;
1970
+ }
1938
1971
  .w-3 {
1939
1972
  width: 0.75rem;
1940
1973
  }
@@ -2031,6 +2064,9 @@ html.calm .tile-glass {
2031
2064
  .min-w-56 {
2032
2065
  min-width: 14rem;
2033
2066
  }
2067
+ .min-w-64 {
2068
+ min-width: 16rem;
2069
+ }
2034
2070
  .min-w-\[1\.1em\] {
2035
2071
  min-width: 1.1em;
2036
2072
  }
@@ -2687,6 +2723,9 @@ html.calm .tile-glass {
2687
2723
  .p-1 {
2688
2724
  padding: 0.25rem;
2689
2725
  }
2726
+ .p-10 {
2727
+ padding: 2.5rem;
2728
+ }
2690
2729
  .p-2 {
2691
2730
  padding: 0.5rem;
2692
2731
  }
@@ -2773,6 +2812,10 @@ html.calm .tile-glass {
2773
2812
  padding-top: 0.5rem;
2774
2813
  padding-bottom: 0.5rem;
2775
2814
  }
2815
+ .py-2\.5 {
2816
+ padding-top: 0.625rem;
2817
+ padding-bottom: 0.625rem;
2818
+ }
2776
2819
  .py-20 {
2777
2820
  padding-top: 5rem;
2778
2821
  padding-bottom: 5rem;
@@ -2991,6 +3034,10 @@ html.calm .tile-glass {
2991
3034
  --tw-text-opacity: 1;
2992
3035
  color: rgb(110 231 183 / var(--tw-text-opacity, 1));
2993
3036
  }
3037
+ .text-emerald-400 {
3038
+ --tw-text-opacity: 1;
3039
+ color: rgb(52 211 153 / var(--tw-text-opacity, 1));
3040
+ }
2994
3041
  .text-emerald-500 {
2995
3042
  --tw-text-opacity: 1;
2996
3043
  color: rgb(16 185 129 / var(--tw-text-opacity, 1));
@@ -3077,6 +3124,9 @@ html.calm .tile-glass {
3077
3124
  .opacity-0 {
3078
3125
  opacity: 0;
3079
3126
  }
3127
+ .opacity-100 {
3128
+ opacity: 1;
3129
+ }
3080
3130
  .opacity-25 {
3081
3131
  opacity: 0.25;
3082
3132
  }
@@ -3183,6 +3233,10 @@ html.calm .tile-glass {
3183
3233
  --tw-blur: blur(8px);
3184
3234
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
3185
3235
  }
3236
+ .blur-2xl {
3237
+ --tw-blur: blur(40px);
3238
+ filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
3239
+ }
3186
3240
  .blur-3xl {
3187
3241
  --tw-blur: blur(64px);
3188
3242
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
@@ -3520,6 +3574,11 @@ html.calm .tile-glass {
3520
3574
  --tw-scale-y: 0.97;
3521
3575
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
3522
3576
  }
3577
+ .active\:scale-\[0\.98\]:active {
3578
+ --tw-scale-x: 0.98;
3579
+ --tw-scale-y: 0.98;
3580
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
3581
+ }
3523
3582
  .active\:cursor-grabbing:active {
3524
3583
  cursor: grabbing;
3525
3584
  }
@@ -3631,6 +3690,17 @@ html.calm .tile-glass {
3631
3690
  }
3632
3691
  @media (min-width: 640px) {
3633
3692
 
3693
+ .sm\:not-sr-only {
3694
+ position: static;
3695
+ width: auto;
3696
+ height: auto;
3697
+ padding: 0;
3698
+ margin: 0;
3699
+ overflow: visible;
3700
+ clip: auto;
3701
+ white-space: normal;
3702
+ }
3703
+
3634
3704
  .sm\:block {
3635
3705
  display: block;
3636
3706
  }
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const A4UI_VERSION = "0.26.0";
1
+ export declare const A4UI_VERSION = "0.28.0";
2
2
  export { cn } from './lib/cn';
3
3
  export { useTheme, toggleTheme, setTheme, storedTheme, applyTheme, toggled, type Theme } from './lib/theme';
4
4
  export { useEffects, isCalm, setEffects } from './lib/effects';
@@ -8,6 +8,7 @@ export { remeasureAfterLayout } from './lib/virtual';
8
8
  export { createOptimistic } from './lib/createOptimistic';
9
9
  export { startViewTransition } from './lib/viewTransition';
10
10
  export { EASE, SPRING, type EaseName, type SpringName } from './lib/easing';
11
+ export { createLinkedSelection, type LinkedSelection } from './lib/createLinkedSelection';
11
12
  export { Accordion, type AccordionItem } from './ui/Accordion';
12
13
  export { Badge, type BadgeTone } from './ui/Badge';
13
14
  export { Button, type ButtonVariant } from './ui/Button';
@@ -115,6 +116,16 @@ export { CodeTabs, type CodeTabsProps, type CodeTab } from './ui/CodeTabs';
115
116
  export { PillSearch, type PillSearchProps, type PillField } from './ui/PillSearch';
116
117
  export { CategoryStrip, type CategoryStripProps, type CategoryItem } from './ui/CategoryStrip';
117
118
  export { MasterDetail, type MasterDetailProps, type MasterDetailItem } from './ui/MasterDetail';
119
+ export { SlashMenu, type SlashMenuProps, type SlashItem } from './ui/SlashMenu';
120
+ export { DataView, type DataViewProps, type DataViewColumn, type DataViewMode } from './ui/DataView';
121
+ export { ScrollScene, type ScrollSceneProps } from './ui/ScrollScene';
122
+ export { StickyReveal, type StickyRevealProps } from './ui/StickyReveal';
123
+ export { BalanceCard, type BalanceCardProps } from './ui/BalanceCard';
124
+ export { TransactionFeed, type TransactionFeedProps, type Transaction } from './ui/TransactionFeed';
125
+ export { KpiBlock, type KpiBlockProps } from './ui/KpiBlock';
126
+ export { MoneyActionButton, type MoneyActionButtonProps, type MoneyActionKind } from './ui/MoneyActionButton';
127
+ export { Spaces, type SpacesProps, type Space } from './ui/Spaces';
128
+ export { SideRail, type SideRailProps, type SideRailItem } from './ui/SideRail';
118
129
  export { ScrambleText, type ScrambleTextProps } from './ui/ScrambleText';
119
130
  export { TextReveal, type TextRevealProps } from './ui/TextReveal';
120
131
  export { HoldToConfirm, type HoldToConfirmProps } from './ui/HoldToConfirm';