@assure-one/design-system 0.15.1 → 0.17.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/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import * as React36 from 'react';
3
- import { forwardRef, useState, useCallback, useId, useRef, useImperativeHandle, useMemo, useEffect, createContext, Fragment as Fragment$1, useContext } from 'react';
3
+ import { forwardRef, useState, useCallback, useId, useRef, useImperativeHandle, useMemo, useEffect, createContext, useContext } from 'react';
4
4
  import * as AccordionPrimitive from '@radix-ui/react-accordion';
5
5
  import { clsx } from 'clsx';
6
6
  import { twMerge } from 'tailwind-merge';
@@ -90,9 +90,9 @@ var colors = {
90
90
  };
91
91
  var typography = {
92
92
  family: {
93
- display: '"Geist", "Inter", -apple-system, system-ui, sans-serif',
93
+ display: '"Inter", -apple-system, system-ui, sans-serif',
94
94
  body: '"Inter", -apple-system, system-ui, sans-serif',
95
- mono: '"Geist Mono", "JetBrains Mono", ui-monospace, monospace'
95
+ mono: '"Inter", -apple-system, system-ui, sans-serif'
96
96
  },
97
97
  weight: {
98
98
  regular: 400,
@@ -230,11 +230,24 @@ var systemTokens = {
230
230
  dangerBg: "var(--color-danger-bg)",
231
231
  dangerLine: "var(--color-danger-line)"
232
232
  },
233
+ gradient: {
234
+ brand: "var(--gradient-brand)",
235
+ pro: "var(--gradient-pro)",
236
+ audit: "var(--gradient-audit)",
237
+ books: "var(--gradient-books)",
238
+ tax: "var(--gradient-tax)"
239
+ },
233
240
  shadow: {
234
241
  quiet: "var(--shadow-quiet)",
235
242
  card: "var(--shadow-card)",
236
243
  pop: "var(--shadow-pop)",
237
- focusRing: "var(--shadow-focus-ring)"
244
+ focusRing: "var(--shadow-focus-ring)",
245
+ xs: "var(--shadow-xs)",
246
+ sm: "var(--shadow-sm)",
247
+ md: "var(--shadow-md)",
248
+ lg: "var(--shadow-lg)",
249
+ xl: "var(--shadow-xl)",
250
+ "2xl": "var(--shadow-2xl)"
238
251
  },
239
252
  radius: {
240
253
  btn: "var(--radius-btn)",
@@ -2235,6 +2248,7 @@ var AccordionTrigger = React36.forwardRef(function AccordionTrigger2({ children,
2235
2248
  "transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
2236
2249
  "hover:text-fg-2",
2237
2250
  "focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
2251
+ "data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[disabled]:hover:text-fg",
2238
2252
  "[&[data-state=open]>svg]:rotate-180",
2239
2253
  className
2240
2254
  ),
@@ -3013,7 +3027,16 @@ var CardAction = forwardRef(
3013
3027
  }
3014
3028
  );
3015
3029
  CardAction.displayName = "CardAction";
3016
- var Checkbox = React36.forwardRef(function Checkbox2({ label, indeterminate, checked, defaultChecked, className, id: providedId, ...props }, ref) {
3030
+ var Checkbox = React36.forwardRef(function Checkbox2({
3031
+ label,
3032
+ indeterminate,
3033
+ checked,
3034
+ defaultChecked,
3035
+ shape = "square",
3036
+ className,
3037
+ id: providedId,
3038
+ ...props
3039
+ }, ref) {
3017
3040
  const generatedId = React36.useId();
3018
3041
  const id = providedId ?? generatedId;
3019
3042
  const resolvedChecked = indeterminate ? "indeterminate" : checked;
@@ -3026,18 +3049,19 @@ var Checkbox = React36.forwardRef(function Checkbox2({ label, indeterminate, che
3026
3049
  checked: resolvedChecked,
3027
3050
  defaultChecked,
3028
3051
  className: cn(
3029
- "peer border-rule-strong bg-surface text-fg-on-pro flex size-4 shrink-0 items-center justify-center rounded-[4px] border",
3052
+ "peer border-rule-strong bg-surface text-pro-fg flex size-4 shrink-0 items-center justify-center border",
3053
+ shape === "circle" ? "rounded-full" : "rounded-[4px]",
3030
3054
  "transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)]",
3031
3055
  "hover:border-fg-4",
3032
3056
  "focus-visible:border-accent focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
3033
- "data-[state=checked]:border-pro-fg data-[state=checked]:bg-pro-fg",
3034
- "data-[state=indeterminate]:border-pro-fg data-[state=indeterminate]:bg-pro-fg",
3057
+ "data-[state=checked]:border-pro-fg data-[state=checked]:bg-pro-bg",
3058
+ "data-[state=indeterminate]:border-pro-fg data-[state=indeterminate]:bg-pro-bg",
3035
3059
  "disabled:bg-bg-disabled disabled:border-rule disabled:text-fg-disabled disabled:cursor-not-allowed",
3036
3060
  "aria-[invalid=true]:border-danger-line",
3037
3061
  className
3038
3062
  ),
3039
3063
  ...props,
3040
- children: /* @__PURE__ */ jsx(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current", children: resolvedChecked === "indeterminate" ? /* @__PURE__ */ jsx(MinusIcon, { className: "size-3", strokeWidth: 3, "aria-hidden": "true" }) : /* @__PURE__ */ jsx(CheckIcon, { className: "size-3", strokeWidth: 3, "aria-hidden": "true" }) })
3064
+ children: /* @__PURE__ */ jsx(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current", children: resolvedChecked === "indeterminate" ? /* @__PURE__ */ jsx(MinusIcon, { className: "size-3", strokeWidth: 3, "aria-hidden": "true" }) : shape === "circle" ? /* @__PURE__ */ jsx("span", { className: "size-1.5 rounded-full bg-current", "aria-hidden": "true" }) : /* @__PURE__ */ jsx(CheckIcon, { className: "size-3", strokeWidth: 3, "aria-hidden": "true" }) })
3041
3065
  }
3042
3066
  ),
3043
3067
  label && /* @__PURE__ */ jsx(
@@ -6220,10 +6244,10 @@ function SearchSelect({
6220
6244
  "div",
6221
6245
  {
6222
6246
  className: cn(
6223
- "rounded-input border-rule-strong bg-surface relative flex h-9 w-full items-center border",
6224
- "transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
6247
+ "rounded-input border-rule-strong bg-surface relative flex h-9 w-full items-center border outline-none",
6248
+ "transition-[color,background-color,border-color] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
6225
6249
  "motion-reduce:transition-none",
6226
- "focus-within:border-accent focus-within:[box-shadow:var(--shadow-focus-ring)]",
6250
+ "focus-within:[outline:1px_solid_var(--color-pro-fg)] focus-within:[outline-offset:-1px]",
6227
6251
  showValue && "hover:bg-bg-2 gap-2 pr-2 pl-3",
6228
6252
  disabled && "bg-bg-disabled cursor-not-allowed"
6229
6253
  ),
@@ -7990,7 +8014,8 @@ function SidebarProvider({
7990
8014
  SidebarProvider.displayName = "SidebarProvider";
7991
8015
  var PEEK_ENTER_DELAY_MS = 100;
7992
8016
  var PEEK_LEAVE_DELAY_MS = 200;
7993
- var Sidebar = React36.forwardRef(function Sidebar2({ className, collapsible = false, onMouseEnter, onMouseLeave, style, ...props }, ref) {
8017
+ var Sidebar = React36.forwardRef(function Sidebar2({ className, collapsible = false, variant = "classic", onMouseEnter, onMouseLeave, style, ...props }, ref) {
8018
+ const isFloating = variant === "floating";
7994
8019
  const ctx = React36.useContext(SidebarContext);
7995
8020
  const state = collapsible && ctx ? ctx.state : "expanded";
7996
8021
  const peekLockCount = collapsible && ctx ? ctx.peekLockCount : 0;
@@ -8053,12 +8078,19 @@ var Sidebar = React36.forwardRef(function Sidebar2({ className, collapsible = fa
8053
8078
  "data-overlay": overlay ? "true" : void 0,
8054
8079
  "data-labels": labelsHidden ? "hide" : "show",
8055
8080
  "data-collapsible": collapsible ? "true" : void 0,
8081
+ "data-variant": variant,
8056
8082
  onMouseEnter: handleEnter,
8057
8083
  onMouseLeave: handleLeave,
8058
8084
  style: { width: effectiveWidth, ...style },
8059
8085
  className: cn(
8060
- "group/sidebar scrollbar-thin flex h-dvh shrink-0 flex-col overflow-y-auto",
8061
- "border-rule bg-bg-2 border-r px-3 pt-4 pb-4",
8086
+ "group/sidebar scrollbar-thin flex shrink-0 flex-col overflow-y-auto px-3 pt-4 pb-4",
8087
+ // Classic: full-height column flush to the left edge with a right
8088
+ // rule. The legacy look.
8089
+ !isFloating && "h-dvh border-rule bg-bg-2 border-r",
8090
+ // Floating: a detached, rounded card inset from the viewport with a
8091
+ // soft shadow — the modern SaaS pattern. The clear figure/ground gap
8092
+ // (Aesthetic-Usability) reads as its own surface above the canvas.
8093
+ isFloating && "border-rule bg-surface shadow-card m-2.5 h-[calc(100dvh-1.25rem)] rounded-2xl border",
8062
8094
  // 220ms feels right for a ~192px width sweep — slower than the
8063
8095
  // 150ms `--duration-fast` (which reads as a snap on this size of
8064
8096
  // movement) but well short of `--duration-slow` (which feels
@@ -8347,6 +8379,11 @@ var SidebarLink = React36.forwardRef(
8347
8379
  // when the column widens during peek. The label simply collapses
8348
8380
  // to width 0 via <SidebarLinkLabel>.
8349
8381
  "[&_svg]:size-3.5 [&_svg]:shrink-0 [&_svg]:opacity-85",
8382
+ // Floating variant: softer corners + a taller hit area (Fitts's
8383
+ // law — a larger target is faster and lower-error to acquire), and
8384
+ // a full pill highlight for active instead of the left rail bar.
8385
+ "group-data-[variant=floating]/sidebar:gap-3 group-data-[variant=floating]/sidebar:rounded-lg group-data-[variant=floating]/sidebar:py-2",
8386
+ "group-data-[variant=floating]/sidebar:data-[active=true]:before:hidden",
8350
8387
  className
8351
8388
  ),
8352
8389
  ...props,
@@ -8356,10 +8393,12 @@ var SidebarLink = React36.forwardRef(
8356
8393
  "span",
8357
8394
  {
8358
8395
  className: cn(
8359
- // line-clamp-1 (not `truncate`) so multi-word labels clip at a
8360
- // word boundary; collapses cleanly with the rail-mode max-width
8361
- // animation since both rules only constrain visible content.
8362
- "min-w-0 flex-1 line-clamp-1",
8396
+ // Flex row so a trailing <SidebarLinkBadge> (ml-auto) aligns
8397
+ // to the right edge with a gap from the label, instead of
8398
+ // butting against it. A line-clamp box swallows the badge's
8399
+ // auto margin, which is why "Billing$48k" rendered glued.
8400
+ // Single-line label clips via overflow; badge stays put.
8401
+ "flex min-w-0 flex-1 items-center gap-1.5 overflow-hidden whitespace-nowrap",
8363
8402
  "transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
8364
8403
  "max-w-full opacity-100",
8365
8404
  "group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible"
@@ -8495,7 +8534,10 @@ var SidebarLinkGroup = React36.forwardRef(
8495
8534
  "data-[active=true]:before:top-1/2 data-[active=true]:before:left-0",
8496
8535
  "data-[active=true]:before:h-4 data-[active=true]:before:w-[2px] data-[active=true]:before:-translate-y-1/2",
8497
8536
  "data-[active=true]:before:bg-pro-fg data-[active=true]:before:rounded-r-full",
8498
- "[&_svg]:size-3.5 [&_svg]:shrink-0 [&_svg]:opacity-85"
8537
+ "[&_svg]:size-3.5 [&_svg]:shrink-0 [&_svg]:opacity-85",
8538
+ // Floating variant — match SidebarLink: taller hit area, pill active.
8539
+ "group-data-[variant=floating]/sidebar:gap-3 group-data-[variant=floating]/sidebar:rounded-lg group-data-[variant=floating]/sidebar:py-2",
8540
+ "group-data-[variant=floating]/sidebar:data-[active=true]:before:hidden"
8499
8541
  );
8500
8542
  const labelSpan = /* @__PURE__ */ jsx(
8501
8543
  "span",
@@ -9901,16 +9943,16 @@ var NotificationPanelHeader = forwardRef(
9901
9943
  ...props,
9902
9944
  children: [
9903
9945
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
9904
- /* @__PURE__ */ jsx("h3", { className: "text-fg text-sm font-semibold", children: title }),
9905
- unreadCount > 0 && /* @__PURE__ */ jsx("span", { className: "bg-accent/10 text-accent rounded-pill px-1.5 py-0.5 text-[11px] font-semibold tabular-nums", children: unreadCount > 99 ? "99+" : unreadCount })
9946
+ /* @__PURE__ */ jsx("h3", { className: "text-fg text-[15px] font-semibold", children: title }),
9947
+ unreadCount > 0 && /* @__PURE__ */ jsx("span", { className: "bg-pro-bg text-pro-fg rounded-pill px-1.5 py-0.5 text-[11px] font-semibold tabular-nums", children: unreadCount > 99 ? "99+" : unreadCount })
9906
9948
  ] }),
9907
9949
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
9908
- onMarkAllRead && unreadCount > 0 && /* @__PURE__ */ jsx(
9950
+ onMarkAllRead && /* @__PURE__ */ jsx(
9909
9951
  "button",
9910
9952
  {
9911
9953
  type: "button",
9912
9954
  onClick: onMarkAllRead,
9913
- className: "text-fg-3 hover:text-fg text-xs font-medium",
9955
+ className: "text-pro-fg rounded-md px-1.5 py-1 text-sm font-medium hover:bg-[color:var(--color-pro-bg)] focus-visible:ring-accent outline-none focus-visible:ring-2",
9914
9956
  children: "Mark all read"
9915
9957
  }
9916
9958
  ),
@@ -9933,7 +9975,7 @@ var NotificationPanelHeader = forwardRef(
9933
9975
  NotificationPanelHeader.displayName = "NotificationPanelHeader";
9934
9976
  var FILTER_OPTIONS = ["all", "unread"];
9935
9977
  var NotificationFilter = forwardRef(
9936
- function NotificationFilter2({ value, onValueChange, actions, className, ...props }, ref) {
9978
+ function NotificationFilter2({ value, onValueChange, counts, actions, className, ...props }, ref) {
9937
9979
  return /* @__PURE__ */ jsxs(
9938
9980
  "div",
9939
9981
  {
@@ -9944,21 +9986,37 @@ var NotificationFilter = forwardRef(
9944
9986
  ),
9945
9987
  ...props,
9946
9988
  children: [
9947
- /* @__PURE__ */ jsx("div", { className: "bg-bg-2 inline-flex rounded-lg p-0.5 text-xs font-medium", children: FILTER_OPTIONS.map((option) => /* @__PURE__ */ jsx(
9948
- "button",
9949
- {
9950
- type: "button",
9951
- onClick: () => onValueChange(option),
9952
- "aria-pressed": value === option,
9953
- className: cn(
9954
- "rounded-md px-2.5 py-1 capitalize transition-colors",
9955
- "focus-visible:ring-accent outline-none focus-visible:ring-2",
9956
- value === option ? "bg-surface text-fg shadow-quiet ring-rule-soft ring-1" : "text-fg-3 hover:text-fg"
9957
- ),
9958
- children: option
9959
- },
9960
- option
9961
- )) }),
9989
+ /* @__PURE__ */ jsx("div", { className: "inline-flex items-center gap-1 text-sm font-medium", children: FILTER_OPTIONS.map((option) => {
9990
+ const selected = value === option;
9991
+ const count = counts?.[option];
9992
+ return /* @__PURE__ */ jsxs(
9993
+ "button",
9994
+ {
9995
+ type: "button",
9996
+ onClick: () => onValueChange(option),
9997
+ "aria-pressed": selected,
9998
+ className: cn(
9999
+ "inline-flex items-center gap-1.5 rounded-lg px-2.5 py-1 capitalize transition-colors",
10000
+ "focus-visible:ring-accent outline-none focus-visible:ring-2",
10001
+ selected ? "bg-surface text-pro-fg ring-1 ring-[color:var(--color-pro-line)]" : "text-fg-3 hover:text-fg"
10002
+ ),
10003
+ children: [
10004
+ option,
10005
+ count != null && /* @__PURE__ */ jsx(
10006
+ "span",
10007
+ {
10008
+ className: cn(
10009
+ "rounded-md px-1.5 py-px text-[11px] font-semibold tabular-nums",
10010
+ selected ? "bg-pro-bg text-pro-fg" : "bg-bg-2 text-fg-4"
10011
+ ),
10012
+ children: count
10013
+ }
10014
+ )
10015
+ ]
10016
+ },
10017
+ option
10018
+ );
10019
+ }) }),
9962
10020
  actions
9963
10021
  ]
9964
10022
  }
@@ -9982,27 +10040,25 @@ var NotificationList = forwardRef(
9982
10040
  NotificationList.displayName = "NotificationList";
9983
10041
  var NotificationItem = forwardRef(
9984
10042
  function NotificationItem2({ title, body, typeLabel, client, time, sender, icon, iconClassName, unread, className, ...props }, ref) {
9985
- const meta = body ? [] : [typeLabel, client].filter(Boolean);
9986
10043
  return /* @__PURE__ */ jsxs(
9987
10044
  "button",
9988
10045
  {
9989
10046
  ref,
9990
10047
  type: "button",
9991
10048
  className: cn(
9992
- "flex w-full gap-3 px-4 py-2.5 text-left outline-none",
10049
+ "flex w-full gap-3 px-4 py-3 text-left outline-none",
9993
10050
  "transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
9994
10051
  unread ? "bg-pro-bg hover:bg-pro-bg-hover focus-visible:bg-pro-bg-hover" : "hover:bg-bg-2/60 focus-visible:bg-bg-2/60",
9995
10052
  className
9996
10053
  ),
9997
10054
  ...props,
9998
10055
  children: [
9999
- /* @__PURE__ */ jsx("span", { className: "flex w-1.5 shrink-0 justify-center", "aria-hidden": "true", children: unread && /* @__PURE__ */ jsx("span", { className: "bg-pro-fg mt-[13px] size-1.5 rounded-full" }) }),
10000
- sender ? /* @__PURE__ */ jsx(Avatar, { size: "sm", name: sender.name, src: sender.src, className: "mt-0.5" }) : /* @__PURE__ */ jsx(
10056
+ sender ? /* @__PURE__ */ jsx(Avatar, { size: "md", name: sender.name, src: sender.src, className: "mt-0.5" }) : /* @__PURE__ */ jsx(
10001
10057
  "div",
10002
10058
  {
10003
10059
  "aria-hidden": "true",
10004
10060
  className: cn(
10005
- "mt-0.5 flex size-7 shrink-0 items-center justify-center rounded-lg [&_svg]:size-3.5",
10061
+ "mt-0.5 flex size-9 shrink-0 items-center justify-center rounded-xl [&_svg]:size-4",
10006
10062
  iconClassName ?? "bg-bg-2 text-fg-3"
10007
10063
  ),
10008
10064
  children: icon
@@ -10010,23 +10066,32 @@ var NotificationItem = forwardRef(
10010
10066
  ),
10011
10067
  /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
10012
10068
  unread && /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Unread. " }),
10013
- /* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-2", children: [
10069
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-1.5", children: [
10014
10070
  /* @__PURE__ */ jsx(
10015
10071
  "p",
10016
10072
  {
10017
10073
  className: cn(
10018
- "line-clamp-2 min-w-0 flex-1 text-[13.5px] leading-snug font-medium",
10074
+ "min-w-0 truncate text-[13.5px] leading-snug font-semibold",
10019
10075
  unread ? "text-fg" : "text-fg-2"
10020
10076
  ),
10021
10077
  children: title
10022
10078
  }
10023
10079
  ),
10024
- time && /* @__PURE__ */ jsx("span", { className: "text-fg-4 shrink-0 text-xs whitespace-nowrap tabular-nums", children: time })
10080
+ unread && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "bg-pro-fg size-1.5 shrink-0 rounded-full" })
10025
10081
  ] }),
10026
- body ? /* @__PURE__ */ jsx("p", { className: "text-fg-3 mt-0.5 truncate text-xs", children: body }) : meta.length > 0 && /* @__PURE__ */ jsx("p", { className: "text-fg-4 mt-0.5 truncate text-[11.5px]", children: meta.map((part, i) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
10027
- i > 0 && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: " \xB7 " }),
10028
- part
10029
- ] }, i)) })
10082
+ body && /* @__PURE__ */ jsx("p", { className: "text-fg-3 mt-0.5 truncate text-xs", children: body }),
10083
+ (typeLabel || client || time) && /* @__PURE__ */ jsxs("div", { className: "mt-1.5 flex items-center gap-2", children: [
10084
+ typeLabel && /* @__PURE__ */ jsx("span", { className: "text-fg-4 text-[11px]", children: typeLabel }),
10085
+ client && /* @__PURE__ */ jsx(
10086
+ Badge,
10087
+ {
10088
+ variant: "outline",
10089
+ className: "rounded-md px-1.5 py-0.5 text-[11px] font-medium",
10090
+ children: client
10091
+ }
10092
+ ),
10093
+ time && /* @__PURE__ */ jsx("span", { className: "text-fg-4 text-xs whitespace-nowrap tabular-nums", children: time })
10094
+ ] })
10030
10095
  ] })
10031
10096
  ]
10032
10097
  }
@@ -10034,6 +10099,26 @@ var NotificationItem = forwardRef(
10034
10099
  }
10035
10100
  );
10036
10101
  NotificationItem.displayName = "NotificationItem";
10102
+ var NotificationPanelFooter = forwardRef(
10103
+ function NotificationPanelFooter2({ className, children = "View all notifications", ...props }, ref) {
10104
+ return /* @__PURE__ */ jsx(
10105
+ "button",
10106
+ {
10107
+ ref,
10108
+ type: "button",
10109
+ className: cn(
10110
+ "border-rule text-fg hover:bg-bg-2 w-full border-t px-4 py-3 text-center text-sm font-medium",
10111
+ "transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
10112
+ "focus-visible:ring-accent outline-none focus-visible:ring-2",
10113
+ className
10114
+ ),
10115
+ ...props,
10116
+ children
10117
+ }
10118
+ );
10119
+ }
10120
+ );
10121
+ NotificationPanelFooter.displayName = "NotificationPanelFooter";
10037
10122
  var padded = (n) => String(n).padStart(2, "0");
10038
10123
  function formatClock(ms) {
10039
10124
  const total = Math.max(0, Math.floor(ms / 1e3));
@@ -10127,30 +10212,43 @@ function useStopwatch() {
10127
10212
  }, [setPhase]);
10128
10213
  return { phase, elapsedMs, isRunning: phase === "running", start, pause, resume, stop, reset };
10129
10214
  }
10130
- var TimeLogger = forwardRef(function TimeLogger2({ className, children, ...props }, ref) {
10215
+ var TimeLogger = forwardRef(function TimeLogger2({ className, orientation = "vertical", children, ...props }, ref) {
10131
10216
  return /* @__PURE__ */ jsx(
10132
10217
  "div",
10133
10218
  {
10134
10219
  ref,
10135
- className: cn("bg-surface text-fg-2 flex w-full flex-col", className),
10220
+ "data-orientation": orientation,
10221
+ className: cn(
10222
+ "group/timelogger bg-surface text-fg-2 flex w-full",
10223
+ orientation === "horizontal" ? "flex-row items-stretch" : "flex-col",
10224
+ className
10225
+ ),
10136
10226
  ...props,
10137
10227
  children
10138
10228
  }
10139
10229
  );
10140
10230
  });
10141
10231
  TimeLogger.displayName = "TimeLogger";
10232
+ var horizontalSegment = "group-data-[orientation=horizontal]/timelogger:border-t-0 group-data-[orientation=horizontal]/timelogger:border-l group-data-[orientation=horizontal]/timelogger:first:border-l-0";
10142
10233
  var TimeLoggerHeader = forwardRef(
10143
10234
  function TimeLoggerHeader2({ title = "Track Time", icon, loggedMinutes = 0, goalMinutes, className, ...props }, ref) {
10144
10235
  const hasGoal = goalMinutes != null;
10145
10236
  const pct = hasGoal && goalMinutes > 0 ? Math.min(100, loggedMinutes / goalMinutes * 100) : 0;
10146
10237
  return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex flex-col", className), ...props, children: [
10147
- /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-4 py-3", children: [
10148
- /* @__PURE__ */ jsxs("div", { className: "text-fg flex items-center gap-2 text-base font-semibold [&_svg]:size-[18px]", children: [
10149
- /* @__PURE__ */ jsx("span", { className: "text-pro-fg", "aria-hidden": "true", children: icon ?? /* @__PURE__ */ jsx(ClockIcon, {}) }),
10238
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-4 py-3.5", children: [
10239
+ /* @__PURE__ */ jsxs("div", { className: "text-fg flex items-center gap-2.5 text-[17px] font-semibold", children: [
10240
+ /* @__PURE__ */ jsx(
10241
+ "span",
10242
+ {
10243
+ className: "bg-pro-bg text-pro-fg flex size-7 shrink-0 items-center justify-center rounded-lg [&_svg]:size-[17px]",
10244
+ "aria-hidden": "true",
10245
+ children: icon ?? /* @__PURE__ */ jsx(ClockIcon, {})
10246
+ }
10247
+ ),
10150
10248
  title
10151
10249
  ] }),
10152
10250
  hasGoal && /* @__PURE__ */ jsxs("div", { className: "text-fg-3 font-mono text-[13px] tabular-nums", children: [
10153
- /* @__PURE__ */ jsx("b", { className: "text-fg font-medium", children: formatDuration(loggedMinutes * 60) }),
10251
+ /* @__PURE__ */ jsx("b", { className: "text-fg font-semibold", children: formatDuration(loggedMinutes * 60) }),
10154
10252
  " /",
10155
10253
  " ",
10156
10254
  formatDuration(goalMinutes * 60)
@@ -10159,7 +10257,7 @@ var TimeLoggerHeader = forwardRef(
10159
10257
  hasGoal && /* @__PURE__ */ jsx(
10160
10258
  "div",
10161
10259
  {
10162
- className: "bg-bg-3 relative h-[3px] w-full",
10260
+ className: "bg-bg-3 relative h-1 w-full",
10163
10261
  role: "progressbar",
10164
10262
  "aria-label": "Daily goal progress",
10165
10263
  "aria-valuemin": 0,
@@ -10168,7 +10266,7 @@ var TimeLoggerHeader = forwardRef(
10168
10266
  children: /* @__PURE__ */ jsx(
10169
10267
  "div",
10170
10268
  {
10171
- className: "bg-pro-fg h-full rounded-r-full transition-[width] duration-[var(--duration-normal)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
10269
+ className: "h-full rounded-r-full bg-[image:var(--gradient-pro)] transition-[width] duration-[var(--duration-normal)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
10172
10270
  style: { width: `${pct}%` }
10173
10271
  }
10174
10272
  )
@@ -10188,7 +10286,11 @@ var TimeLoggerContextRow = forwardRef(
10188
10286
  "div",
10189
10287
  {
10190
10288
  ref,
10191
- className: cn("border-rule-soft flex items-center gap-2.5 border-t px-4 py-2.5", className),
10289
+ className: cn(
10290
+ "border-rule-soft flex items-center gap-2.5 border-t px-4 py-3",
10291
+ horizontalSegment,
10292
+ className
10293
+ ),
10192
10294
  ...props,
10193
10295
  children: [
10194
10296
  onClientSelect ? /* @__PURE__ */ jsxs(
@@ -10233,7 +10335,15 @@ var TimeLoggerTimer = forwardRef(
10233
10335
  "div",
10234
10336
  {
10235
10337
  ref,
10236
- className: cn("border-rule-soft flex items-center gap-2 border-t px-4 py-2.5", className),
10338
+ className: cn(
10339
+ "border-rule-soft flex items-center gap-2.5 border-t px-4 py-4",
10340
+ // In a horizontal bar this segment is usually the `flex-1` grower;
10341
+ // min-w-0 lets the clock shrink instead of pushing the trailing
10342
+ // segment off the edge.
10343
+ "group-data-[orientation=horizontal]/timelogger:min-w-0",
10344
+ horizontalSegment,
10345
+ className
10346
+ ),
10237
10347
  ...props,
10238
10348
  children: [
10239
10349
  /* @__PURE__ */ jsx(
@@ -10241,7 +10351,7 @@ var TimeLoggerTimer = forwardRef(
10241
10351
  {
10242
10352
  className: cn(
10243
10353
  "text-fg placeholder:text-fg-4 min-w-0 flex-1 border-0 bg-transparent outline-none",
10244
- showClock ? "font-mono text-[22px] font-medium tracking-tight tabular-nums" : "text-[15px]"
10354
+ showClock ? "font-mono text-[28px] font-semibold tracking-tight tabular-nums" : "text-[15px]"
10245
10355
  ),
10246
10356
  value: showClock ? formatClock(elapsedMs) : value ?? "",
10247
10357
  onChange: (event) => onValueChange?.(event.target.value),
@@ -10254,9 +10364,9 @@ var TimeLoggerTimer = forwardRef(
10254
10364
  Button,
10255
10365
  {
10256
10366
  type: "button",
10257
- variant: "secondary",
10367
+ variant: "ghost",
10258
10368
  size: "icon",
10259
- className: "rounded-full",
10369
+ className: "text-fg-3 hover:bg-bg-3 hover:text-fg size-10 rounded-full",
10260
10370
  "aria-label": phase === "paused" ? "Resume timer" : "Pause timer",
10261
10371
  disabled: phase === "idle" || phase === "stopped",
10262
10372
  onClick: phase === "paused" ? onResume : onPause,
@@ -10269,7 +10379,7 @@ var TimeLoggerTimer = forwardRef(
10269
10379
  type: "button",
10270
10380
  variant: "destructive",
10271
10381
  size: "icon",
10272
- className: "rounded-full",
10382
+ className: "shadow-card hover:shadow-pop size-12 rounded-full transition-[transform,box-shadow] active:scale-95 motion-reduce:transition-none",
10273
10383
  "aria-label": "Stop timer",
10274
10384
  onClick: onStop,
10275
10385
  children: /* @__PURE__ */ jsx(StopIcon, {})
@@ -10280,7 +10390,7 @@ var TimeLoggerTimer = forwardRef(
10280
10390
  type: "button",
10281
10391
  variant: "primary",
10282
10392
  size: "icon",
10283
- className: "rounded-full",
10393
+ className: "shadow-card hover:shadow-pop size-12 rounded-full bg-[image:var(--gradient-brand)] transition-[transform,box-shadow] active:scale-95 motion-reduce:transition-none",
10284
10394
  "aria-label": "Start timer",
10285
10395
  onClick: onStart,
10286
10396
  children: /* @__PURE__ */ jsx(PlayIcon, {})
@@ -10311,7 +10421,9 @@ var TimeLoggerField = forwardRef(
10311
10421
  trailing !== void 0 ? trailing : interactive ? /* @__PURE__ */ jsx(ChevronRightIcon, { className: "text-fg-4 size-4 shrink-0" }) : null
10312
10422
  ] });
10313
10423
  const classes = cn(
10314
- "border-rule-soft flex w-full items-center gap-3 border-t px-4 py-2.5 text-left",
10424
+ "border-rule-soft flex w-full items-center gap-3 border-t px-4 py-3 text-left",
10425
+ "group-data-[orientation=horizontal]/timelogger:w-auto",
10426
+ horizontalSegment,
10315
10427
  interactive && "hover:bg-surface-2 focus-visible:bg-surface-2 cursor-pointer transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] outline-none motion-reduce:transition-none",
10316
10428
  className
10317
10429
  );
@@ -10334,7 +10446,7 @@ var TimeLoggerField = forwardRef(
10334
10446
  TimeLoggerField.displayName = "TimeLoggerField";
10335
10447
  var TimeLoggerNotes = forwardRef(
10336
10448
  function TimeLoggerNotes2({ value, onValueChange, icon, placeholder = "Add notes", className, ...props }, ref) {
10337
- return /* @__PURE__ */ jsxs("div", { className: "border-rule-soft flex items-center gap-3 border-t px-4 py-2.5", children: [
10449
+ return /* @__PURE__ */ jsxs("div", { className: "border-rule-soft flex items-center gap-3 border-t px-4 py-3", children: [
10338
10450
  /* @__PURE__ */ jsx(
10339
10451
  "span",
10340
10452
  {
@@ -10452,7 +10564,8 @@ var TimeLoggerActions = forwardRef(
10452
10564
  {
10453
10565
  ref,
10454
10566
  className: cn(
10455
- "border-rule bg-surface-2 flex items-center gap-2 border-t px-4 py-2.5",
10567
+ "border-rule bg-surface-2 flex items-center gap-2 border-t px-4 py-3",
10568
+ horizontalSegment,
10456
10569
  className
10457
10570
  ),
10458
10571
  ...props,
@@ -10480,7 +10593,10 @@ var TimeLoggerEntry = forwardRef(
10480
10593
  "div",
10481
10594
  {
10482
10595
  ref,
10483
- className: cn("border-rule-soft flex items-center gap-3 border-t px-4 py-2", className),
10596
+ className: cn(
10597
+ "border-rule-soft hover:bg-surface-2 flex items-center gap-3 border-t px-4 py-2.5 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
10598
+ className
10599
+ ),
10484
10600
  ...props,
10485
10601
  children: [
10486
10602
  /* @__PURE__ */ jsx(
@@ -10531,7 +10647,7 @@ var TimeLoggerFooter = forwardRef(
10531
10647
  "div",
10532
10648
  {
10533
10649
  ref,
10534
- className: cn("border-rule flex gap-2 border-t px-4 py-2.5 [&>*]:flex-1", className),
10650
+ className: cn("border-rule flex gap-2 border-t px-4 py-3 [&>*]:flex-1", className),
10535
10651
  ...props,
10536
10652
  children
10537
10653
  }
@@ -10819,6 +10935,6 @@ var KbdHint = forwardRef(function KbdHint2({ className, children, ...props }, re
10819
10935
  });
10820
10936
  KbdHint.displayName = "KbdHint";
10821
10937
 
10822
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityEventItem, ActivityItem, ActivityList, Alert, AlertCircleIcon, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlertTriangleIcon, AlertTriangleSolidIcon, AppHeader, AppHeaderActions, AppHeaderBreadcrumb, AppHeaderSearch, AppHeaderTitle, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowRightSmallIcon, ArrowUpIcon, AspectRatio, AssureAuditBrandIcon, AssureBooksBrandIcon, AssureProBrandIcon, AssureTaxBrandIcon, AtSignIcon, Avatar, Badge, BarChartIcon, BellIcon, Blockquote, BoldIcon, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BriefcaseIcon, Building2Icon, BuildingIcon, BulkActionBar, BulkActionBarAction, BulkActionBarSeparator, Button, Calendar, CalendarIcon, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChatBubbleIcon, CheckCircle2Icon, CheckCircleSolidIcon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, ClientSelect, ClipboardCheckIcon, ClockIcon, CloseIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, ComingSoon, CommandIcon, CommandPalette, ConfirmActionButton, Content15 as Content, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyIcon, CornerDownLeftIcon, CreditCardIcon, DATE_DISPLAY_PLACEHOLDER, DangerAction, DataItem, DataTable, DataTableBody, DataTableCell, DataTableCellDue, DataTableCellId, DataTableCellMono, DataTableCellName, DataTableCheckbox, DataTableHead, DataTableHeader, DataTablePagination, DataTableResultsCount, DataTableRow, DataTableSearch, DataTableSpacer, DataTableToolbar, DatePicker, DateRangePicker, DetailGrid, DetailMain, DetailSpine, DetailSpineHeader, DetailSpineSection, DetailSpineStats, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DismissibleChip, DocumentIcon, DollarSignIcon, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EyeIcon, EyeOffIcon, Eyebrow, FileIcon, FileReturnIcon, FileTextIcon, FileUpload, FilterChip, FilterIcon, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FormError, FormSection, FormSuccess, GlobeIcon, GoogleBrandIcon, HelpCircleIcon, HistoryIcon, HomeIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, IconAction, InboxIcon, InfoCircleSolidIcon, InfoIcon, Input, ItalicIcon, Kanban, KanbanCard, KanbanColumn, KanbanIcon, KbdHint, KeyIcon, KeyboardShortcutsDialog, KpiCard, Label4 as Label, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkAction, LinkButton, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LoadingRows, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, Logo, MailIcon, Main, MapPinIcon, MenuIcon, MessageBubble, MessageBubbleAction, MessageBubbleTombstone, MessageCircleIcon, MessageCircleWarningIcon, MessageComposer, MetadataGrid, MicrosoftBrandIcon, MinusIcon, MonitorIcon, MoonIcon, MoreHorizontalIcon, MoveIcon, MultiFilterPill, MultiSelectField, MutedSpec, NotificationFilter, NotificationItem, NotificationList, NotificationPanel, NotificationPanelHeader, Numeric, OTPInput, PageHeader, PageHeaderSep, PageHeaderSpec, Pagination, PaletteIcon, PanelLeftCloseIcon, PanelLeftIcon, PaperclipIcon, PauseIcon, PenSignIcon, PencilIcon, PhoneIcon, PhoneInput, PlayIcon, PlusIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, PrimaryAction, PriorityIcon, ProgressBar, ProgressRing, RadioGroup3 as RadioGroup, RadioGroupItem, ReceiptIcon, ReplyIcon, RotateCcwIcon, SaveIcon, ScrollArea, ScrollBar, SearchIcon, SearchInput, SearchSelect, SecondaryAction, Section, SectionHead, SectionHeader, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SelectableKpiCard, SendIcon, Separator4 as Separator, SettingsIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Shell, ShieldIcon, SideDrawer, Sidebar, SidebarBrand, SidebarBrandSwitcher, SidebarBrandSwitcherTile, SidebarBrandText, SidebarFooter, SidebarLink, SidebarLinkAction, SidebarLinkBadge, SidebarLinkGroup, SidebarLinkLabel, SidebarPinButton, SidebarProvider, SidebarSection, SidebarTrigger, SidebarUser, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, SparkleIcon, SparklesIcon, Spinner, StarIcon, StarRating, Stat, StatusIcon, Stepper, StopIcon, StrikethroughIcon, SubmitButton, SunIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableIcon, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagIcon, TeamIcon, TeamMemberSelect, Textarea, TimeLogger, TimeLoggerActions, TimeLoggerBillable, TimeLoggerContextRow, TimeLoggerEntry, TimeLoggerEntryList, TimeLoggerField, TimeLoggerFooter, TimeLoggerHeader, TimeLoggerNotes, TimeLoggerTimer, ToastProvider, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Trash2Icon, TrashIcon, TrendingDownIcon, TrendingUpIcon, UnderlineIcon, UploadIcon, UserCircleIcon, UserIcon, UsersIcon, VisuallyHidden, WorkflowIcon, XCircleSolidIcon, XIcon, YEAR_DISPLAY_PLACEHOLDER, ZoomInIcon, ZoomOutIcon, alertVariants, applyMask, applyYearMask, badgeVariants, buttonVariants, cardVariants, cn, colors, dateToIso, displayToIso, filterChipVariants, formatClock, formatCurrency, formatDuration, inputVariants, isoToDate, isoToDisplay, isoToYear, labelVariants, parseDuration, progressBarVariants, progressRingVariants, radii, reference, searchInputVariants, shadows, sidebarLinkBadgeVariants, spacing, spinnerVariants, starRatingVariants, surfaces, systemTokens, textareaVariants, typography, useSidebarPeekLock, useSidebarState, useStopwatch, useToast, yearToIso };
10938
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityEventItem, ActivityItem, ActivityList, Alert, AlertCircleIcon, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlertTriangleIcon, AlertTriangleSolidIcon, AppHeader, AppHeaderActions, AppHeaderBreadcrumb, AppHeaderSearch, AppHeaderTitle, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowRightSmallIcon, ArrowUpIcon, AspectRatio, AssureAuditBrandIcon, AssureBooksBrandIcon, AssureProBrandIcon, AssureTaxBrandIcon, AtSignIcon, Avatar, Badge, BarChartIcon, BellIcon, Blockquote, BoldIcon, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BriefcaseIcon, Building2Icon, BuildingIcon, BulkActionBar, BulkActionBarAction, BulkActionBarSeparator, Button, Calendar, CalendarIcon, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChatBubbleIcon, CheckCircle2Icon, CheckCircleSolidIcon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, ClientSelect, ClipboardCheckIcon, ClockIcon, CloseIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, ComingSoon, CommandIcon, CommandPalette, ConfirmActionButton, Content15 as Content, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyIcon, CornerDownLeftIcon, CreditCardIcon, DATE_DISPLAY_PLACEHOLDER, DangerAction, DataItem, DataTable, DataTableBody, DataTableCell, DataTableCellDue, DataTableCellId, DataTableCellMono, DataTableCellName, DataTableCheckbox, DataTableHead, DataTableHeader, DataTablePagination, DataTableResultsCount, DataTableRow, DataTableSearch, DataTableSpacer, DataTableToolbar, DatePicker, DateRangePicker, DetailGrid, DetailMain, DetailSpine, DetailSpineHeader, DetailSpineSection, DetailSpineStats, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DismissibleChip, DocumentIcon, DollarSignIcon, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EyeIcon, EyeOffIcon, Eyebrow, FileIcon, FileReturnIcon, FileTextIcon, FileUpload, FilterChip, FilterIcon, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FormError, FormSection, FormSuccess, GlobeIcon, GoogleBrandIcon, HelpCircleIcon, HistoryIcon, HomeIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, IconAction, InboxIcon, InfoCircleSolidIcon, InfoIcon, Input, ItalicIcon, Kanban, KanbanCard, KanbanColumn, KanbanIcon, KbdHint, KeyIcon, KeyboardShortcutsDialog, KpiCard, Label4 as Label, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkAction, LinkButton, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LoadingRows, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, Logo, MailIcon, Main, MapPinIcon, MenuIcon, MessageBubble, MessageBubbleAction, MessageBubbleTombstone, MessageCircleIcon, MessageCircleWarningIcon, MessageComposer, MetadataGrid, MicrosoftBrandIcon, MinusIcon, MonitorIcon, MoonIcon, MoreHorizontalIcon, MoveIcon, MultiFilterPill, MultiSelectField, MutedSpec, NotificationFilter, NotificationItem, NotificationList, NotificationPanel, NotificationPanelFooter, NotificationPanelHeader, Numeric, OTPInput, PageHeader, PageHeaderSep, PageHeaderSpec, Pagination, PaletteIcon, PanelLeftCloseIcon, PanelLeftIcon, PaperclipIcon, PauseIcon, PenSignIcon, PencilIcon, PhoneIcon, PhoneInput, PlayIcon, PlusIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, PrimaryAction, PriorityIcon, ProgressBar, ProgressRing, RadioGroup3 as RadioGroup, RadioGroupItem, ReceiptIcon, ReplyIcon, RotateCcwIcon, SaveIcon, ScrollArea, ScrollBar, SearchIcon, SearchInput, SearchSelect, SecondaryAction, Section, SectionHead, SectionHeader, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SelectableKpiCard, SendIcon, Separator4 as Separator, SettingsIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Shell, ShieldIcon, SideDrawer, Sidebar, SidebarBrand, SidebarBrandSwitcher, SidebarBrandSwitcherTile, SidebarBrandText, SidebarFooter, SidebarLink, SidebarLinkAction, SidebarLinkBadge, SidebarLinkGroup, SidebarLinkLabel, SidebarPinButton, SidebarProvider, SidebarSection, SidebarTrigger, SidebarUser, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, SparkleIcon, SparklesIcon, Spinner, StarIcon, StarRating, Stat, StatusIcon, Stepper, StopIcon, StrikethroughIcon, SubmitButton, SunIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableIcon, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagIcon, TeamIcon, TeamMemberSelect, Textarea, TimeLogger, TimeLoggerActions, TimeLoggerBillable, TimeLoggerContextRow, TimeLoggerEntry, TimeLoggerEntryList, TimeLoggerField, TimeLoggerFooter, TimeLoggerHeader, TimeLoggerNotes, TimeLoggerTimer, ToastProvider, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Trash2Icon, TrashIcon, TrendingDownIcon, TrendingUpIcon, UnderlineIcon, UploadIcon, UserCircleIcon, UserIcon, UsersIcon, VisuallyHidden, WorkflowIcon, XCircleSolidIcon, XIcon, YEAR_DISPLAY_PLACEHOLDER, ZoomInIcon, ZoomOutIcon, alertVariants, applyMask, applyYearMask, badgeVariants, buttonVariants, cardVariants, cn, colors, dateToIso, displayToIso, filterChipVariants, formatClock, formatCurrency, formatDuration, inputVariants, isoToDate, isoToDisplay, isoToYear, labelVariants, parseDuration, progressBarVariants, progressRingVariants, radii, reference, searchInputVariants, shadows, sidebarLinkBadgeVariants, spacing, spinnerVariants, starRatingVariants, surfaces, systemTokens, textareaVariants, typography, useSidebarPeekLock, useSidebarState, useStopwatch, useToast, yearToIso };
10823
10939
  //# sourceMappingURL=index.js.map
10824
10940
  //# sourceMappingURL=index.js.map