@giddaa-housing/ui 3.2.0 → 3.4.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/dist/styles.css CHANGED
@@ -164,6 +164,7 @@
164
164
  --animate-accordion-up: accordion-up 0.2s ease-out;
165
165
  --animate-sonar-glow: sonar-glow 1.5s cubic-bezier(0, 0, 0.2, 1) infinite;
166
166
  --animate-round-sonar-glow: round-sonar-glow 1.5s ease-out infinite;
167
+ --animate-sonar-wave: sonar-wave 1.5s cubic-bezier(0, 0, 0.2, 1) infinite;
167
168
  --animate-spin-slow: spin 3s linear infinite;
168
169
  }
169
170
  }
@@ -578,9 +579,6 @@
578
579
  .row-start-2 {
579
580
  grid-row-start: 2;
580
581
  }
581
- .row-start-3 {
582
- grid-row-start: 3;
583
- }
584
582
  .container {
585
583
  width: 100%;
586
584
  @media (width >= 40rem) {
@@ -724,6 +722,9 @@
724
722
  .block {
725
723
  display: block;
726
724
  }
725
+ .contents {
726
+ display: contents;
727
+ }
727
728
  .flex {
728
729
  display: flex;
729
730
  }
@@ -1414,6 +1415,9 @@
1414
1415
  .flex-1 {
1415
1416
  flex: 1;
1416
1417
  }
1418
+ .shrink {
1419
+ flex-shrink: 1;
1420
+ }
1417
1421
  .shrink-0 {
1418
1422
  flex-shrink: 0;
1419
1423
  }
@@ -1555,6 +1559,9 @@
1555
1559
  .animate-pulse {
1556
1560
  animation: var(--animate-pulse);
1557
1561
  }
1562
+ .animate-sonar-wave {
1563
+ animation: var(--animate-sonar-wave);
1564
+ }
1558
1565
  .animate-spin {
1559
1566
  animation: var(--animate-spin);
1560
1567
  }
@@ -2207,10 +2214,10 @@
2207
2214
  background-color: color-mix(in oklab, var(--color-black) 65%, transparent);
2208
2215
  }
2209
2216
  }
2210
- .bg-black\/80 {
2211
- background-color: color-mix(in srgb, #000 80%, transparent);
2217
+ .bg-black\/70 {
2218
+ background-color: color-mix(in srgb, #000 70%, transparent);
2212
2219
  @supports (color: color-mix(in lab, red, red)) {
2213
- background-color: color-mix(in oklab, var(--color-black) 80%, transparent);
2220
+ background-color: color-mix(in oklab, var(--color-black) 70%, transparent);
2214
2221
  }
2215
2222
  }
2216
2223
  .bg-black\/90 {
@@ -2884,6 +2891,9 @@
2884
2891
  .wrap-break-word {
2885
2892
  overflow-wrap: break-word;
2886
2893
  }
2894
+ .whitespace-normal {
2895
+ white-space: normal;
2896
+ }
2887
2897
  .whitespace-nowrap {
2888
2898
  white-space: nowrap;
2889
2899
  }
@@ -3173,6 +3183,10 @@
3173
3183
  -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
3174
3184
  backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
3175
3185
  }
3186
+ .backdrop-filter {
3187
+ -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
3188
+ backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
3189
+ }
3176
3190
  .transition {
3177
3191
  transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;
3178
3192
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
@@ -3685,6 +3699,15 @@
3685
3699
  .\[--slider-track-size\:0\.375rem\] {
3686
3700
  --slider-track-size: 0.375rem;
3687
3701
  }
3702
+ .\[--sonar-spread\:0\.375rem\] {
3703
+ --sonar-spread: 0.375rem;
3704
+ }
3705
+ .\[--sonar-spread\:0\.625rem\] {
3706
+ --sonar-spread: 0.625rem;
3707
+ }
3708
+ .\[--sonar-spread\:0\.875rem\] {
3709
+ --sonar-spread: 0.875rem;
3710
+ }
3688
3711
  .\[--switch-spinner-size\:0\.75rem\] {
3689
3712
  --switch-spinner-size: 0.75rem;
3690
3713
  }
@@ -3985,6 +4008,11 @@
3985
4008
  background-color: var(--color-line-danger);
3986
4009
  }
3987
4010
  }
4011
+ .group-has-\[\[data-slot\=alert-title\]\]\/alert\:row-start-2 {
4012
+ &:is(:where(.group\/alert):has(*:is([data-slot=alert-title])) *) {
4013
+ grid-row-start: 2;
4014
+ }
4015
+ }
3988
4016
  .group-has-\[\>input\]\/input-group\:pt-2 {
3989
4017
  &:is(:where(.group\/input-group):has(>input) *) {
3990
4018
  padding-top: calc(var(--spacing) * 2);
@@ -6435,12 +6463,12 @@
6435
6463
  }
6436
6464
  }
6437
6465
  }
6438
- .hover\:bg-black\/90 {
6466
+ .hover\:bg-black\/80 {
6439
6467
  &:hover {
6440
6468
  @media (hover: hover) {
6441
- background-color: color-mix(in srgb, #000 90%, transparent);
6469
+ background-color: color-mix(in srgb, #000 80%, transparent);
6442
6470
  @supports (color: color-mix(in lab, red, red)) {
6443
- background-color: color-mix(in oklab, var(--color-black) 90%, transparent);
6471
+ background-color: color-mix(in oklab, var(--color-black) 80%, transparent);
6444
6472
  }
6445
6473
  }
6446
6474
  }
@@ -6934,6 +6962,14 @@
6934
6962
  }
6935
6963
  }
6936
6964
  }
6965
+ .active\:not-aria-\[haspopup\]\:translate-y-0 {
6966
+ &:active {
6967
+ &:not(*[aria-haspopup]) {
6968
+ --tw-translate-y: 0;
6969
+ translate: var(--tw-translate-x) var(--tw-translate-y);
6970
+ }
6971
+ }
6972
+ }
6937
6973
  .active\:not-aria-\[haspopup\]\:translate-y-px {
6938
6974
  &:active {
6939
6975
  &:not(*[aria-haspopup]) {
@@ -9586,6 +9622,21 @@
9586
9622
  margin-top: calc(var(--spacing) * -1);
9587
9623
  }
9588
9624
  }
9625
+ .supports-backdrop-filter\:bg-black\/40 {
9626
+ @supports (backdrop-filter: var(--tw)) {
9627
+ background-color: color-mix(in srgb, #000 40%, transparent);
9628
+ @supports (color: color-mix(in lab, red, red)) {
9629
+ background-color: color-mix(in oklab, var(--color-black) 40%, transparent);
9630
+ }
9631
+ }
9632
+ }
9633
+ .supports-backdrop-filter\:backdrop-blur-\[15px\] {
9634
+ @supports (backdrop-filter: var(--tw)) {
9635
+ --tw-backdrop-blur: blur(15px);
9636
+ -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
9637
+ backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
9638
+ }
9639
+ }
9589
9640
  .supports-backdrop-filter\:backdrop-blur-xl {
9590
9641
  @supports (backdrop-filter: var(--tw)) {
9591
9642
  --tw-backdrop-blur: blur(var(--blur-xl));
@@ -9593,6 +9644,18 @@
9593
9644
  backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
9594
9645
  }
9595
9646
  }
9647
+ .supports-backdrop-filter\:hover\:bg-black\/55 {
9648
+ @supports (backdrop-filter: var(--tw)) {
9649
+ &:hover {
9650
+ @media (hover: hover) {
9651
+ background-color: color-mix(in srgb, #000 55%, transparent);
9652
+ @supports (color: color-mix(in lab, red, red)) {
9653
+ background-color: color-mix(in oklab, var(--color-black) 55%, transparent);
9654
+ }
9655
+ }
9656
+ }
9657
+ }
9658
+ }
9596
9659
  .supports-\[backdrop-filter\]\:backdrop-blur-xl {
9597
9660
  @supports (backdrop-filter: var(--tw)) {
9598
9661
  --tw-backdrop-blur: blur(var(--blur-xl));
@@ -9600,6 +9663,11 @@
9600
9663
  backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
9601
9664
  }
9602
9665
  }
9666
+ .motion-reduce\:hidden {
9667
+ @media (prefers-reduced-motion: reduce) {
9668
+ display: none;
9669
+ }
9670
+ }
9603
9671
  .motion-reduce\:scale-100 {
9604
9672
  @media (prefers-reduced-motion: reduce) {
9605
9673
  --tw-scale-x: 100%;
@@ -9613,6 +9681,17 @@
9613
9681
  animation: none;
9614
9682
  }
9615
9683
  }
9684
+ .motion-reduce\:opacity-40 {
9685
+ @media (prefers-reduced-motion: reduce) {
9686
+ opacity: 40%;
9687
+ }
9688
+ }
9689
+ .motion-reduce\:shadow-\[0_0_0_2px_currentColor\] {
9690
+ @media (prefers-reduced-motion: reduce) {
9691
+ --tw-shadow: 0 0 0 2px var(--tw-shadow-color, currentColor);
9692
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
9693
+ }
9694
+ }
9616
9695
  .motion-reduce\:transition-colors {
9617
9696
  @media (prefers-reduced-motion: reduce) {
9618
9697
  transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
@@ -10034,6 +10113,13 @@
10034
10113
  flex-direction: column;
10035
10114
  }
10036
10115
  }
10116
+ .max-sm\:group-has-\[\[data-slot\=alert-title\]\]\/alert\:row-start-3 {
10117
+ @media (width < 40rem) {
10118
+ &:is(:where(.group\/alert):has(*:is([data-slot=alert-title])) *) {
10119
+ grid-row-start: 3;
10120
+ }
10121
+ }
10122
+ }
10037
10123
  .sm\:top-4 {
10038
10124
  @media (width >= 40rem) {
10039
10125
  top: calc(var(--spacing) * 4);
@@ -12397,6 +12483,7 @@
12397
12483
  --animate-bouncing-loader: none;
12398
12484
  --animate-sonar-glow: none;
12399
12485
  --animate-round-sonar-glow: none;
12486
+ --animate-sonar-wave: none;
12400
12487
  --animate-spin-slow: none;
12401
12488
  }
12402
12489
  }
@@ -12479,6 +12566,16 @@
12479
12566
  opacity: 0;
12480
12567
  }
12481
12568
  }
12569
+ @keyframes sonar-wave {
12570
+ from {
12571
+ box-shadow: 0 0 0 0 currentColor;
12572
+ opacity: 0.55;
12573
+ }
12574
+ to {
12575
+ box-shadow: 0 0 0 var(--sonar-spread, 0.625rem) currentColor;
12576
+ opacity: 0;
12577
+ }
12578
+ }
12482
12579
  @layer base {
12483
12580
  body {
12484
12581
  display: flex;
package/dist/tabs.d.ts CHANGED
@@ -3,6 +3,11 @@ import { ComponentPropsWithoutRef } from "react";
3
3
  import { Tabs as Tabs$1 } from "@base-ui/react/tabs";
4
4
  //#region src/tabs.d.ts
5
5
  type TabsListVariant = "default" | "line" | "secondary" | "underline";
6
+ /**
7
+ * Keep friendly aliases in the public API, but collapse to the two concrete
8
+ * looks the design system ships: `underline` (Primary) and `secondary` (Pill).
9
+ */
10
+ declare function resolveTabsListVariant(variant: TabsListVariant): "secondary" | "underline";
6
11
  declare function Tabs({ className, orientation, size, ...props }: Tabs$1.Root.Props & {
7
12
  /**
8
13
  * @deprecated Pass `size` to `TabsList` instead — the root is
@@ -18,6 +23,13 @@ declare function TabsList({ className, variant, size, children, ...props }: Tabs
18
23
  variant?: TabsListVariant;
19
24
  size?: ComponentSize;
20
25
  }): import("react").JSX.Element;
26
+ /**
27
+ * Indicator styling, exported alongside `tabsTriggerClassName` so recipes that
28
+ * drive their own active state (e.g. `ScrollSpy`) can render the same sliding
29
+ * bar. Positions itself off the `--active-tab-*` custom properties, which Base
30
+ * UI sets on the list — anything reusing this has to set them too.
31
+ */
32
+ declare const tabsIndicatorClassName: string;
21
33
  /**
22
34
  * Trigger styling, exported so recipes (e.g. an overflow "More" button that
23
35
  * isn't a real tab) can render the same look. Reads both `variant` and `size`
@@ -39,4 +51,4 @@ type TabsCountProps = ComponentPropsWithoutRef<"span"> & {
39
51
  declare function TabsCount({ className, count, abbreviate, max, loading, children, ...props }: TabsCountProps): import("react").JSX.Element;
40
52
  declare function TabsContent({ className, ...props }: Tabs$1.Panel.Props): import("react").JSX.Element;
41
53
  //#endregion
42
- export { Tabs, TabsContent, TabsCount, TabsList, TabsTrigger, tabsListVariants, tabsTriggerClassName };
54
+ export { Tabs, TabsContent, TabsCount, TabsList, type TabsListVariant, TabsTrigger, resolveTabsListVariant, tabsIndicatorClassName, tabsListVariants, tabsTriggerClassName };
package/dist/tabs.js CHANGED
@@ -40,10 +40,17 @@ function TabsList({ className, variant = "underline", size, children, ...props }
40
40
  "data-size": resolvedSize,
41
41
  className: cn(tabsListVariants({ variant: resolvedVariant }), className),
42
42
  ...props,
43
- children: [children, /* @__PURE__ */ jsx(Tabs$1.Indicator, { className: cn("pointer-events-none absolute left-0 top-0 z-0 h-(--active-tab-height) w-(--active-tab-width) translate-x-(--active-tab-left) translate-y-(--active-tab-top) transition-[translate,width,height] duration-200 ease-in-out motion-reduce:transition-none", "group-data-[variant=secondary]/tabs-list:hidden", "group-data-[variant=underline]/tabs-list:rounded-none group-data-[variant=underline]/tabs-list:bg-line-focus group-data-[variant=underline]/tabs-list:shadow-none", "group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:top-auto group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:bottom-[-1px] group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:h-0.5! group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:translate-y-0", "group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:left-auto group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:right-[-1px] group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:w-0.5! group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:translate-x-0") })]
43
+ children: [children, /* @__PURE__ */ jsx(Tabs$1.Indicator, { className: tabsIndicatorClassName })]
44
44
  });
45
45
  }
46
46
  /**
47
+ * Indicator styling, exported alongside `tabsTriggerClassName` so recipes that
48
+ * drive their own active state (e.g. `ScrollSpy`) can render the same sliding
49
+ * bar. Positions itself off the `--active-tab-*` custom properties, which Base
50
+ * UI sets on the list — anything reusing this has to set them too.
51
+ */
52
+ const tabsIndicatorClassName = cn("pointer-events-none absolute left-0 top-0 z-0 h-(--active-tab-height) w-(--active-tab-width) translate-x-(--active-tab-left) translate-y-(--active-tab-top) transition-[translate,width,height] duration-200 ease-in-out motion-reduce:transition-none", "group-data-[variant=secondary]/tabs-list:hidden", "group-data-[variant=underline]/tabs-list:rounded-none group-data-[variant=underline]/tabs-list:bg-line-focus group-data-[variant=underline]/tabs-list:shadow-none", "group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:top-auto group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:bottom-[-1px] group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:h-0.5! group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:translate-y-0", "group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:left-auto group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:right-[-1px] group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:w-0.5! group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:translate-x-0");
53
+ /**
47
54
  * Trigger styling, exported so recipes (e.g. an overflow "More" button that
48
55
  * isn't a real tab) can render the same look. Reads both `variant` and `size`
49
56
  * off the parent `group/tabs-list`, so it stays in sync wherever it lives
@@ -112,4 +119,4 @@ function TabsContent({ className, ...props }) {
112
119
  });
113
120
  }
114
121
  //#endregion
115
- export { Tabs, TabsContent, TabsCount, TabsList, TabsTrigger, tabsListVariants, tabsTriggerClassName };
122
+ export { Tabs, TabsContent, TabsCount, TabsList, TabsTrigger, resolveTabsListVariant, tabsIndicatorClassName, tabsListVariants, tabsTriggerClassName };
package/dist/toast.js CHANGED
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { Check, Info, X } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { Button } from "./button.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@giddaa-housing/ui",
3
- "version": "3.2.0",
3
+ "version": "3.4.0",
4
4
  "description": "Giddaa reusable UI component library.",
5
5
  "type": "module",
6
6
  "private": false,
@@ -317,6 +317,10 @@
317
317
  "types": "./dist/scatter-chart.d.ts",
318
318
  "import": "./dist/scatter-chart.js"
319
319
  },
320
+ "./scroll-spy": {
321
+ "types": "./dist/scroll-spy.d.ts",
322
+ "import": "./dist/scroll-spy.js"
323
+ },
320
324
  "./search-input": {
321
325
  "types": "./dist/search-input.d.ts",
322
326
  "import": "./dist/search-input.js"
@@ -349,6 +353,10 @@
349
353
  "types": "./dist/skeleton.d.ts",
350
354
  "import": "./dist/skeleton.js"
351
355
  },
356
+ "./sonar": {
357
+ "types": "./dist/sonar.d.ts",
358
+ "import": "./dist/sonar.js"
359
+ },
352
360
  "./sparkline": {
353
361
  "types": "./dist/sparkline.d.ts",
354
362
  "import": "./dist/sparkline.js"