@algenium/blocks 1.4.0 → 1.5.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -3168,7 +3168,7 @@ function DropdownMenuItem({
3168
3168
  "data-inset": inset,
3169
3169
  "data-variant": variant,
3170
3170
  className: cn(
3171
- "focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
3171
+ "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[highlighted]:[&_svg:not([class*='text-'])]:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:[&_svg:not([class*='text-'])]:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:data-[highlighted]:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 dark:data-[variant=destructive]:data-[highlighted]:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:data-[highlighted]:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
3172
3172
  className
3173
3173
  ),
3174
3174
  ...props
@@ -3186,7 +3186,7 @@ function DropdownMenuCheckboxItem({
3186
3186
  {
3187
3187
  "data-slot": "dropdown-menu-checkbox-item",
3188
3188
  className: cn(
3189
- "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
3189
+ "relative flex cursor-default select-none items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[highlighted]:[&_svg:not([class*='text-'])]:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:[&_svg:not([class*='text-'])]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
3190
3190
  className
3191
3191
  ),
3192
3192
  checked,
@@ -3219,7 +3219,7 @@ function DropdownMenuRadioItem({
3219
3219
  {
3220
3220
  "data-slot": "dropdown-menu-radio-item",
3221
3221
  className: cn(
3222
- "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
3222
+ "relative flex cursor-default select-none items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[highlighted]:[&_svg:not([class*='text-'])]:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:[&_svg:not([class*='text-'])]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
3223
3223
  className
3224
3224
  ),
3225
3225
  ...props,
@@ -3294,7 +3294,7 @@ function DropdownMenuSubTrigger({
3294
3294
  "data-slot": "dropdown-menu-sub-trigger",
3295
3295
  "data-inset": inset,
3296
3296
  className: cn(
3297
- "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
3297
+ "flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden data-[inset]:pl-8 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[highlighted]:[&_svg:not([class*='text-'])]:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:[&_svg:not([class*='text-'])]:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:[&_svg:not([class*='text-'])]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
3298
3298
  className
3299
3299
  ),
3300
3300
  ...props,
@@ -3370,9 +3370,9 @@ var buttonVariants = cva(
3370
3370
  variant: {
3371
3371
  default: "bg-primary text-primary-foreground hover:bg-primary/90",
3372
3372
  destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
3373
- outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
3373
+ outline: "border bg-background text-foreground shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:text-foreground dark:hover:bg-muted dark:hover:text-foreground",
3374
3374
  secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
3375
- ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
3375
+ ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 dark:hover:text-foreground",
3376
3376
  link: "text-primary underline-offset-4 hover:underline"
3377
3377
  },
3378
3378
  size: {
@@ -3564,7 +3564,7 @@ function ThemeSwitcher({
3564
3564
  onClick: () => handleThemeClick(key),
3565
3565
  className: cn(
3566
3566
  "gap-2 cursor-pointer",
3567
- currentTheme === key && "bg-accent"
3567
+ currentTheme === key && "bg-accent text-accent-foreground [&_svg]:text-accent-foreground"
3568
3568
  ),
3569
3569
  children: [
3570
3570
  /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-4 w-4" }),
@@ -3722,7 +3722,7 @@ function LanguageSwitcher({
3722
3722
  onClick: () => onLanguageChange?.(key),
3723
3723
  className: cn(
3724
3724
  "justify-center text-xs font-semibold cursor-pointer px-3",
3725
- currentLanguage === key && "bg-accent"
3725
+ currentLanguage === key && "bg-accent text-accent-foreground"
3726
3726
  ),
3727
3727
  children: nativeName
3728
3728
  },
@@ -3794,6 +3794,90 @@ var defaultLabels2 = {
3794
3794
  staging: "Staging",
3795
3795
  development: "Development"
3796
3796
  };
3797
+ function getEnvironmentDotClass(env) {
3798
+ switch (env) {
3799
+ case "production":
3800
+ return "bg-emerald-500";
3801
+ case "staging":
3802
+ return "bg-orange-500";
3803
+ case "development":
3804
+ return "bg-amber-400";
3805
+ default:
3806
+ return "bg-muted-foreground";
3807
+ }
3808
+ }
3809
+ function getEnvironmentLabel(env, labels) {
3810
+ switch (env) {
3811
+ case "production":
3812
+ return labels.live;
3813
+ case "staging":
3814
+ return labels.staging;
3815
+ case "development":
3816
+ return labels.development;
3817
+ default:
3818
+ return env;
3819
+ }
3820
+ }
3821
+ function abbreviateEnvironment(env) {
3822
+ switch (env) {
3823
+ case "production":
3824
+ return "Prod";
3825
+ case "staging":
3826
+ return "Stg";
3827
+ case "development":
3828
+ return "Dev";
3829
+ default:
3830
+ return env;
3831
+ }
3832
+ }
3833
+ var environmentDotSizeClasses = {
3834
+ xs: "size-1.5",
3835
+ sm: "size-2",
3836
+ md: "size-2.5"
3837
+ };
3838
+ function EnvironmentDot({
3839
+ env,
3840
+ size = "sm",
3841
+ className
3842
+ }) {
3843
+ const sizeClass = environmentDotSizeClasses[size];
3844
+ return /* @__PURE__ */ jsxRuntime.jsx(
3845
+ "span",
3846
+ {
3847
+ className: cn(
3848
+ "rounded-full shrink-0 ring-1 ring-background",
3849
+ sizeClass,
3850
+ getEnvironmentDotClass(env),
3851
+ className
3852
+ ),
3853
+ "aria-hidden": true
3854
+ }
3855
+ );
3856
+ }
3857
+ function EnvironmentMiniBadge({
3858
+ className,
3859
+ environment: propEnvironment,
3860
+ labels: userLabels,
3861
+ abbreviated = true
3862
+ }) {
3863
+ const ctx = useEnvironmentContext();
3864
+ const labels = { ...defaultLabels2, ...userLabels };
3865
+ const environment = propEnvironment ?? ctx?.environment ?? "production";
3866
+ const text = abbreviated ? abbreviateEnvironment(environment) : getEnvironmentLabel(environment, labels);
3867
+ return /* @__PURE__ */ jsxRuntime.jsxs(
3868
+ "span",
3869
+ {
3870
+ className: cn(
3871
+ "inline-flex max-w-[4.5rem] items-center gap-1 rounded-full border border-border bg-muted/60 px-1.5 py-0.5 text-[10px] font-semibold tabular-nums text-foreground",
3872
+ className
3873
+ ),
3874
+ children: [
3875
+ /* @__PURE__ */ jsxRuntime.jsx(EnvironmentDot, { env: environment, size: "xs" }),
3876
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate", children: text })
3877
+ ]
3878
+ }
3879
+ );
3880
+ }
3797
3881
  var sizeClasses3 = {
3798
3882
  sm: {
3799
3883
  container: "h-7 p-0.5 text-xs",
@@ -3821,30 +3905,6 @@ var shapeClasses3 = {
3821
3905
  rounded: "rounded-md",
3822
3906
  pill: "rounded-full"
3823
3907
  };
3824
- function envDotClass(env) {
3825
- switch (env) {
3826
- case "production":
3827
- return "bg-emerald-500";
3828
- case "staging":
3829
- return "bg-orange-500";
3830
- case "development":
3831
- return "bg-amber-400";
3832
- default:
3833
- return "bg-muted-foreground";
3834
- }
3835
- }
3836
- function labelForEnv(env, labels) {
3837
- switch (env) {
3838
- case "production":
3839
- return labels.live;
3840
- case "staging":
3841
- return labels.staging;
3842
- case "development":
3843
- return labels.development;
3844
- default:
3845
- return env;
3846
- }
3847
- }
3848
3908
  function EnvironmentSwitcher({
3849
3909
  className,
3850
3910
  environment: propEnvironment,
@@ -3895,12 +3955,12 @@ function EnvironmentSwitcher({
3895
3955
  className: cn(
3896
3956
  "rounded-full shrink-0 ring-1 ring-background",
3897
3957
  sizes.dot,
3898
- envDotClass(environment)
3958
+ getEnvironmentDotClass(environment)
3899
3959
  ),
3900
3960
  "aria-hidden": true
3901
3961
  }
3902
3962
  ),
3903
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "max-w-[5.5rem] truncate", children: labelForEnv(environment, labels) })
3963
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "max-w-[5.5rem] truncate", children: getEnvironmentLabel(environment, labels) })
3904
3964
  ]
3905
3965
  }
3906
3966
  ) }) }),
@@ -3920,7 +3980,7 @@ function EnvironmentSwitcher({
3920
3980
  onClick: () => handleSelect(env),
3921
3981
  className: cn(
3922
3982
  "gap-2 cursor-pointer",
3923
- environment === env && "bg-accent"
3983
+ environment === env && "bg-accent text-accent-foreground [&_svg]:text-accent-foreground"
3924
3984
  ),
3925
3985
  children: [
3926
3986
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -3929,12 +3989,12 @@ function EnvironmentSwitcher({
3929
3989
  className: cn(
3930
3990
  "rounded-full shrink-0 ring-1 ring-background",
3931
3991
  sizes.dot,
3932
- envDotClass(env)
3992
+ getEnvironmentDotClass(env)
3933
3993
  ),
3934
3994
  "aria-hidden": true
3935
3995
  }
3936
3996
  ),
3937
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: labelForEnv(env, labels) })
3997
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: getEnvironmentLabel(env, labels) })
3938
3998
  ]
3939
3999
  },
3940
4000
  env
@@ -3965,7 +4025,7 @@ function EnvironmentSwitcher({
3965
4025
  "button",
3966
4026
  {
3967
4027
  type: "button",
3968
- "aria-label": labelForEnv(env, labels),
4028
+ "aria-label": getEnvironmentLabel(env, labels),
3969
4029
  "aria-pressed": isActive,
3970
4030
  className: cn(
3971
4031
  "relative min-w-0 font-semibold capitalize",
@@ -3999,12 +4059,12 @@ function EnvironmentSwitcher({
3999
4059
  className: cn(
4000
4060
  "rounded-full shrink-0 ring-1 ring-background",
4001
4061
  "h-1.5 w-1.5",
4002
- envDotClass(env)
4062
+ getEnvironmentDotClass(env)
4003
4063
  ),
4004
4064
  "aria-hidden": true
4005
4065
  }
4006
4066
  ),
4007
- labelForEnv(env, labels)
4067
+ getEnvironmentLabel(env, labels)
4008
4068
  ]
4009
4069
  }
4010
4070
  )
@@ -7340,6 +7400,8 @@ exports.DropdownMenuSubTrigger = DropdownMenuSubTrigger;
7340
7400
  exports.DropdownMenuTrigger = DropdownMenuTrigger;
7341
7401
  exports.EnvironmentBanner = EnvironmentBanner;
7342
7402
  exports.EnvironmentContext = EnvironmentContext;
7403
+ exports.EnvironmentDot = EnvironmentDot;
7404
+ exports.EnvironmentMiniBadge = EnvironmentMiniBadge;
7343
7405
  exports.EnvironmentSwitcher = EnvironmentSwitcher;
7344
7406
  exports.EventDialog = EventDialog;
7345
7407
  exports.EventRsvpBadge = EventRsvpBadge;
@@ -7365,6 +7427,8 @@ exports.UpcomingEvents = UpcomingEvents;
7365
7427
  exports.buttonVariants = buttonVariants;
7366
7428
  exports.cn = cn;
7367
7429
  exports.defaultLanguages = defaultLanguages;
7430
+ exports.getEnvironmentDotClass = getEnvironmentDotClass;
7431
+ exports.getEnvironmentLabel = getEnvironmentLabel;
7368
7432
  exports.isBlocksDataEnvironment = isBlocksDataEnvironment;
7369
7433
  exports.toggleVariants = toggleVariants;
7370
7434
  exports.useCalendarContext = useCalendarContext;