@devalok/shilp-sutra 0.21.0 → 0.22.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.
Files changed (96) hide show
  1. package/dist/_chunks/use-calendar.js +115 -115
  2. package/dist/_chunks/vendor-utils.js +1230 -1178
  3. package/dist/composed/activity-feed.d.ts.map +1 -1
  4. package/dist/composed/activity-feed.js +78 -78
  5. package/dist/composed/avatar-group.d.ts +2 -2
  6. package/dist/composed/avatar-group.d.ts.map +1 -1
  7. package/dist/composed/avatar-group.js +87 -117
  8. package/dist/composed/command-palette.js +50 -50
  9. package/dist/composed/content-card.js +10 -10
  10. package/dist/composed/empty-state.d.ts.map +1 -1
  11. package/dist/composed/empty-state.js +58 -48
  12. package/dist/composed/global-loading.d.ts.map +1 -1
  13. package/dist/composed/global-loading.js +11 -10
  14. package/dist/composed/loading-skeleton.d.ts.map +1 -1
  15. package/dist/composed/loading-skeleton.js +32 -29
  16. package/dist/composed/member-picker.d.ts.map +1 -1
  17. package/dist/composed/member-picker.js +28 -17
  18. package/dist/composed/page-header.js +25 -25
  19. package/dist/composed/priority-indicator.d.ts.map +1 -1
  20. package/dist/composed/priority-indicator.js +60 -36
  21. package/dist/composed/rich-text-editor.js +104 -104
  22. package/dist/composed/schedule-view.d.ts.map +1 -1
  23. package/dist/composed/schedule-view.js +52 -44
  24. package/dist/composed/status-badge.js +16 -16
  25. package/dist/shell/bottom-navbar.d.ts.map +1 -1
  26. package/dist/shell/bottom-navbar.js +35 -31
  27. package/dist/shell/notification-center.d.ts.map +1 -1
  28. package/dist/shell/notification-center.js +119 -111
  29. package/dist/shell/sidebar.js +2 -2
  30. package/dist/shell/top-bar.js +9 -9
  31. package/dist/tailwind/index.cjs +30 -3
  32. package/dist/tailwind/preset.d.ts.map +1 -1
  33. package/dist/tailwind/preset.js +30 -3
  34. package/dist/tokens/semantic.css +10 -10
  35. package/dist/tokens/typography-semantic.css +3 -3
  36. package/dist/ui/accordion.js +22 -22
  37. package/dist/ui/alert.js +8 -8
  38. package/dist/ui/avatar.d.ts.map +1 -1
  39. package/dist/ui/avatar.js +72 -86
  40. package/dist/ui/badge.js +5 -5
  41. package/dist/ui/banner.js +18 -18
  42. package/dist/ui/breadcrumb.js +23 -23
  43. package/dist/ui/button.js +22 -22
  44. package/dist/ui/card.js +16 -16
  45. package/dist/ui/checkbox.d.ts.map +1 -1
  46. package/dist/ui/checkbox.js +72 -25
  47. package/dist/ui/chip.js +14 -14
  48. package/dist/ui/code.js +9 -9
  49. package/dist/ui/combobox.d.ts.map +1 -1
  50. package/dist/ui/combobox.js +46 -45
  51. package/dist/ui/dialog.js +17 -17
  52. package/dist/ui/dropdown-menu.js +22 -22
  53. package/dist/ui/form.d.ts.map +1 -1
  54. package/dist/ui/form.js +35 -29
  55. package/dist/ui/input.js +20 -20
  56. package/dist/ui/label.js +15 -15
  57. package/dist/ui/lib/motion.d.ts.map +1 -1
  58. package/dist/ui/lib/motion.js +2 -2
  59. package/dist/ui/link.js +14 -14
  60. package/dist/ui/number-input.js +36 -36
  61. package/dist/ui/pagination.js +14 -14
  62. package/dist/ui/progress.js +6 -6
  63. package/dist/ui/radio.d.ts.map +1 -1
  64. package/dist/ui/radio.js +24 -12
  65. package/dist/ui/search-input.d.ts.map +1 -1
  66. package/dist/ui/search-input.js +25 -19
  67. package/dist/ui/select.js +15 -15
  68. package/dist/ui/separator.d.ts +10 -2
  69. package/dist/ui/separator.d.ts.map +1 -1
  70. package/dist/ui/separator.js +16 -15
  71. package/dist/ui/sheet.js +7 -7
  72. package/dist/ui/sidebar.d.ts +1 -1
  73. package/dist/ui/sidebar.d.ts.map +1 -1
  74. package/dist/ui/sidebar.js +22 -22
  75. package/dist/ui/skeleton.js +5 -5
  76. package/dist/ui/slider.js +7 -7
  77. package/dist/ui/stat-card.js +19 -19
  78. package/dist/ui/switch.d.ts.map +1 -1
  79. package/dist/ui/switch.js +14 -13
  80. package/dist/ui/tabs.d.ts.map +1 -1
  81. package/dist/ui/tabs.js +60 -51
  82. package/dist/ui/textarea.js +15 -15
  83. package/dist/ui/toast.js +1 -1
  84. package/dist/ui/toggle.js +5 -5
  85. package/dist/ui/tooltip.d.ts +0 -4
  86. package/dist/ui/tooltip.d.ts.map +1 -1
  87. package/dist/ui/tooltip.js +24 -24
  88. package/docs/components/ui/avatar.md +3 -0
  89. package/docs/components/ui/button.md +5 -0
  90. package/docs/components/ui/checkbox.md +5 -0
  91. package/docs/components/ui/dropdown-menu.md +3 -0
  92. package/docs/components/ui/separator.md +3 -0
  93. package/docs/components/ui/tooltip.md +5 -0
  94. package/llms-full.txt +25 -1
  95. package/llms.txt +20 -0
  96. package/package.json +1 -1
@@ -1,37 +1,37 @@
1
1
  "use client";
2
- import { jsxs as l, jsx as t, Fragment as H } from "react/jsx-runtime";
3
- import * as O from "react";
4
- import { useRef as $, useCallback as x } from "react";
5
- import { formatRelativeTime as z } from "../ui/lib/date-utils.js";
6
- import { Popover as B, PopoverTrigger as G, PopoverContent as X } from "../ui/popover.js";
7
- import { Tooltip as _, TooltipTrigger as q, TooltipContent as F } from "../ui/tooltip.js";
8
- import { IconBell as J, IconChecks as L, IconInbox as Q, IconX as U } from "@tabler/icons-react";
2
+ import { jsxs as a, jsx as e, Fragment as $ } from "react/jsx-runtime";
3
+ import * as z from "react";
4
+ import { useRef as B, useCallback as x } from "react";
5
+ import { formatRelativeTime as G } from "../ui/lib/date-utils.js";
6
+ import { Popover as X, PopoverTrigger as _, PopoverContent as q } from "../ui/popover.js";
7
+ import { Tooltip as F, TooltipTrigger as J, TooltipContent as L } from "../ui/tooltip.js";
8
+ import { IconBell as Q, IconChecks as U, IconInbox as V, IconX as W } from "@tabler/icons-react";
9
9
  import { cn as p } from "../ui/lib/utils.js";
10
- import { Spinner as V } from "../ui/spinner.js";
11
- import { m as W } from "../_chunks/framer.js";
12
- function y(e, a) {
13
- return e.getFullYear() === a.getFullYear() && e.getMonth() === a.getMonth() && e.getDate() === a.getDate();
10
+ import { Spinner as Z } from "../ui/spinner.js";
11
+ import { m as N } from "../_chunks/framer.js";
12
+ function v(t, d) {
13
+ return t.getFullYear() === d.getFullYear() && t.getMonth() === d.getMonth() && t.getDate() === d.getDate();
14
14
  }
15
- function Z(e) {
16
- const a = new Date(e), i = /* @__PURE__ */ new Date(), d = /* @__PURE__ */ new Date();
17
- return d.setDate(i.getDate() - 1), y(a, i) ? "Today" : y(a, d) ? "Yesterday" : "Earlier";
15
+ function M(t) {
16
+ const d = new Date(t), i = /* @__PURE__ */ new Date(), l = /* @__PURE__ */ new Date();
17
+ return l.setDate(i.getDate() - 1), v(d, i) ? "Today" : v(d, l) ? "Yesterday" : "Earlier";
18
18
  }
19
- const v = {
19
+ const w = {
20
20
  INFO: "bg-info-9",
21
21
  IMPORTANT: "bg-warning-9",
22
22
  CRITICAL: "bg-error-9"
23
23
  };
24
- function M({
25
- notification: e,
26
- onRead: a,
24
+ function ee({
25
+ notification: t,
26
+ onRead: d,
27
27
  onNavigate: i,
28
- getRoute: d,
28
+ getRoute: l,
29
29
  onDismiss: u
30
30
  }) {
31
- const g = d(e), o = () => {
32
- e.isRead || a(e.id), g && i(g);
31
+ const g = l(t), o = () => {
32
+ t.isRead || d(t.id), g && i(g);
33
33
  };
34
- return /* @__PURE__ */ l(
34
+ return /* @__PURE__ */ a(
35
35
  "div",
36
36
  {
37
37
  role: "button",
@@ -41,50 +41,50 @@ function M({
41
41
  (r.key === "Enter" || r.key === " ") && (r.preventDefault(), o());
42
42
  },
43
43
  className: p(
44
- "group relative flex w-full cursor-pointer items-start gap-ds-04 px-ds-05 py-ds-04 text-left transition-colors duration-fast-02",
44
+ "group relative flex w-full cursor-pointer items-start gap-ds-04 px-ds-05 py-ds-04 text-left transition-colors duration-fast-02 ease-productive-standard",
45
45
  "hover:bg-surface-2",
46
- !e.isRead && "bg-accent-1"
46
+ !t.isRead && "bg-accent-1"
47
47
  ),
48
48
  children: [
49
- /* @__PURE__ */ t("div", { className: "mt-ds-02b flex shrink-0", children: /* @__PURE__ */ t(
49
+ /* @__PURE__ */ e("div", { className: "mt-ds-02b flex shrink-0", children: /* @__PURE__ */ e(
50
50
  "span",
51
51
  {
52
52
  className: p(
53
- "h-[8px] w-[8px] rounded-ds-full transition-opacity duration-fast-02",
54
- v[e.tier] || v.INFO,
55
- e.isRead ? "opacity-20" : "opacity-100"
53
+ "h-[8px] w-[8px] rounded-ds-full transition-opacity duration-fast-02 ease-productive-standard",
54
+ w[t.tier] || w.INFO,
55
+ t.isRead ? "opacity-20" : "opacity-100"
56
56
  )
57
57
  }
58
58
  ) }),
59
- /* @__PURE__ */ l("div", { className: "min-w-0 flex-1", children: [
60
- /* @__PURE__ */ t(
59
+ /* @__PURE__ */ a("div", { className: "min-w-0 flex-1", children: [
60
+ /* @__PURE__ */ e(
61
61
  "p",
62
62
  {
63
63
  className: p(
64
64
  "truncate text-ds-md text-surface-fg",
65
- !e.isRead && "font-semibold"
65
+ !t.isRead && "font-semibold"
66
66
  ),
67
- children: e.title
67
+ children: t.title
68
68
  }
69
69
  ),
70
- e.body && /* @__PURE__ */ t("p", { className: "mt-ds-01 line-clamp-2 text-ds-sm text-surface-fg-subtle", children: e.body }),
71
- /* @__PURE__ */ l("div", { className: "mt-ds-02 flex items-center gap-ds-03", children: [
72
- /* @__PURE__ */ t("span", { className: "text-ds-sm text-surface-fg-subtle", children: z(e.createdAt) }),
73
- e.project && /* @__PURE__ */ l(H, { children: [
74
- /* @__PURE__ */ t("span", { className: "text-surface-fg-subtle", children: "·" }),
75
- /* @__PURE__ */ t("span", { className: "truncate text-ds-sm text-surface-fg-subtle", children: e.project.title })
70
+ t.body && /* @__PURE__ */ e("p", { className: "mt-ds-01 line-clamp-2 text-ds-sm text-surface-fg-subtle", children: t.body }),
71
+ /* @__PURE__ */ a("div", { className: "mt-ds-02 flex items-center gap-ds-03", children: [
72
+ /* @__PURE__ */ e("span", { className: "text-ds-sm text-surface-fg-subtle", children: G(t.createdAt) }),
73
+ t.project && /* @__PURE__ */ a($, { children: [
74
+ /* @__PURE__ */ e("span", { className: "text-surface-fg-subtle", children: "·" }),
75
+ /* @__PURE__ */ e("span", { className: "truncate text-ds-sm text-surface-fg-subtle", children: t.project.title })
76
76
  ] })
77
77
  ] }),
78
- e.actions && e.actions.length > 0 && /* @__PURE__ */ t("div", { className: "mt-ds-03 flex items-center gap-ds-02", children: e.actions.map((r) => /* @__PURE__ */ t(
78
+ t.actions && t.actions.length > 0 && /* @__PURE__ */ e("div", { className: "mt-ds-03 flex items-center gap-ds-02", children: t.actions.map((r) => /* @__PURE__ */ e(
79
79
  "button",
80
80
  {
81
81
  type: "button",
82
82
  onClick: (c) => {
83
- c.stopPropagation(), r.onClick(e.id);
83
+ c.stopPropagation(), r.onClick(t.id);
84
84
  },
85
85
  onKeyDown: (c) => c.stopPropagation(),
86
86
  className: p(
87
- "rounded-ds-md px-ds-03 py-ds-01 text-ds-sm font-medium transition-colors duration-fast-02",
87
+ "rounded-ds-md px-ds-03 py-ds-01 text-ds-sm font-medium transition-colors duration-fast-02 ease-productive-standard",
88
88
  r.variant === "primary" ? "bg-accent-9 text-accent-fg hover:bg-accent-10" : r.variant === "danger" ? "text-error-11 hover:bg-error-3" : "text-surface-fg-muted hover:bg-surface-3"
89
89
  ),
90
90
  children: r.label
@@ -92,80 +92,80 @@ function M({
92
92
  r.label
93
93
  )) })
94
94
  ] }),
95
- u && /* @__PURE__ */ t(
95
+ u && /* @__PURE__ */ e(
96
96
  "button",
97
97
  {
98
98
  type: "button",
99
- "aria-label": `Dismiss notification: ${e.title}`,
99
+ "aria-label": `Dismiss notification: ${t.title}`,
100
100
  onClick: (r) => {
101
- r.stopPropagation(), u(e.id);
101
+ r.stopPropagation(), u(t.id);
102
102
  },
103
103
  onKeyDown: (r) => r.stopPropagation(),
104
- className: "absolute right-ds-03 top-ds-03 hidden rounded-ds-sm p-ds-01 text-surface-fg-subtle transition-colors duration-fast-02 hover:bg-surface-3 hover:text-surface-fg-muted group-hover:flex group-focus-within:flex",
105
- children: /* @__PURE__ */ t(U, { className: "h-ico-sm w-ico-sm" })
104
+ className: "absolute right-ds-03 top-ds-03 hidden rounded-ds-sm p-ds-01 text-surface-fg-subtle transition-[color,background-color,opacity] duration-fast-01 ease-productive-standard hover:bg-surface-3 hover:text-surface-fg-muted group-hover:flex group-focus-within:flex",
105
+ children: /* @__PURE__ */ e(W, { className: "h-ico-sm w-ico-sm" })
106
106
  }
107
107
  )
108
108
  ]
109
109
  }
110
110
  );
111
111
  }
112
- const ee = O.forwardRef(
112
+ const te = z.forwardRef(
113
113
  ({
114
- notifications: e = [],
115
- unreadCount: a,
114
+ notifications: t = [],
115
+ unreadCount: d,
116
116
  open: i,
117
- onOpenChange: d,
117
+ onOpenChange: l,
118
118
  isLoading: u = !1,
119
119
  hasMore: g = !1,
120
120
  onFetchMore: o,
121
121
  onMarkRead: h,
122
122
  onMarkAllRead: r,
123
123
  onNavigate: c,
124
- getNotificationRoute: w,
125
- onDismiss: D,
126
- headerActions: I,
127
- emptyState: C,
124
+ getNotificationRoute: D,
125
+ onDismiss: I,
126
+ headerActions: C,
127
+ emptyState: T,
128
128
  footerSlot: b,
129
- popoverClassName: T,
130
- className: j,
131
- ...R
132
- }, k) => {
133
- const N = $(null), n = a ?? e.filter((s) => !s.isRead).length, P = w ?? (() => null), K = x(
129
+ popoverClassName: j,
130
+ className: R,
131
+ ...k
132
+ }, P) => {
133
+ const y = B(null), n = d ?? t.filter((s) => !s.isRead).length, K = D ?? (() => null), Y = x(
134
134
  (s) => {
135
- d == null || d(!1), c == null || c(s);
135
+ l == null || l(!1), c == null || c(s);
136
136
  },
137
- [c, d]
138
- ), Y = x(
137
+ [c, l]
138
+ ), E = x(
139
139
  (s) => {
140
140
  h == null || h(s);
141
141
  },
142
142
  [h]
143
- ), E = x(() => {
144
- const s = N.current;
143
+ ), S = x(() => {
144
+ const s = y.current;
145
145
  !s || u || !g || s.scrollTop + s.clientHeight >= s.scrollHeight - 50 && (o == null || o());
146
- }, [u, g, o]), S = e.reduce(
146
+ }, [u, g, o]), A = t.reduce(
147
147
  (s, m) => {
148
- const f = Z(m.createdAt);
148
+ const f = M(m.createdAt);
149
149
  return s[f] || (s[f] = []), s[f].push(m), s;
150
150
  },
151
151
  {}
152
- ), A = ["Today", "Yesterday", "Earlier"];
153
- return /* @__PURE__ */ l(B, { open: i, onOpenChange: d, children: [
154
- /* @__PURE__ */ l(_, { children: [
155
- /* @__PURE__ */ t(q, { asChild: !0, children: /* @__PURE__ */ t(G, { asChild: !0, children: /* @__PURE__ */ l(
152
+ ), H = ["Today", "Yesterday", "Earlier"];
153
+ return /* @__PURE__ */ a(X, { open: i, onOpenChange: l, children: [
154
+ /* @__PURE__ */ a(F, { children: [
155
+ /* @__PURE__ */ e(J, { asChild: !0, children: /* @__PURE__ */ e(_, { asChild: !0, children: /* @__PURE__ */ a(
156
156
  "button",
157
157
  {
158
- ...R,
159
- ref: k,
158
+ ...k,
159
+ ref: P,
160
160
  "aria-label": n > 0 ? `Notifications, ${n} unread` : "Notifications",
161
161
  className: p(
162
- "relative flex h-ds-sm-plus w-ds-sm-plus items-center justify-center rounded-ds-full border border-surface-border-strong bg-surface-2 text-surface-fg-muted transition-colors hover:bg-surface-3",
163
- j
162
+ "relative flex h-ds-sm-plus w-ds-sm-plus items-center justify-center rounded-ds-full border border-surface-border-strong bg-surface-2 text-surface-fg-muted transition-colors ease-productive-standard hover:bg-surface-3",
163
+ R
164
164
  ),
165
165
  children: [
166
- /* @__PURE__ */ t(J, { className: "h-ico-sm w-ico-sm", "aria-hidden": "true" }),
167
- n > 0 && /* @__PURE__ */ t(
168
- W.span,
166
+ /* @__PURE__ */ e(Q, { className: "h-ico-sm w-ico-sm", "aria-hidden": "true" }),
167
+ n > 0 && /* @__PURE__ */ e(
168
+ N.span,
169
169
  {
170
170
  initial: { rotate: 0 },
171
171
  animate: { rotate: [0, -3, 3, -1, 1, 0] },
@@ -177,79 +177,87 @@ const ee = O.forwardRef(
177
177
  ]
178
178
  }
179
179
  ) }) }),
180
- /* @__PURE__ */ t(F, { side: "bottom", align: "center", children: "Notifications" })
180
+ /* @__PURE__ */ e(L, { side: "bottom", align: "center", children: "Notifications" })
181
181
  ] }),
182
- /* @__PURE__ */ l(
183
- X,
182
+ /* @__PURE__ */ a(
183
+ q,
184
184
  {
185
185
  className: p(
186
186
  "w-[380px] rounded-ds-xl border border-surface-border-strong bg-surface-1 p-0 shadow-03",
187
- T
187
+ j
188
188
  ),
189
189
  sideOffset: 8,
190
190
  align: "end",
191
191
  children: [
192
- /* @__PURE__ */ l("div", { className: "flex items-center justify-between border-b border-surface-border-strong px-ds-05 py-ds-04", children: [
193
- /* @__PURE__ */ l("div", { className: "flex items-center gap-ds-03", children: [
194
- /* @__PURE__ */ t("h3", { className: "text-ds-md font-semibold text-surface-fg", children: "Notifications" }),
195
- n > 0 && /* @__PURE__ */ t("span", { className: "flex h-5 min-w-5 items-center justify-center rounded-ds-full bg-accent-2 px-ds-02b text-ds-sm font-semibold text-accent-11", children: n })
192
+ /* @__PURE__ */ a("div", { className: "flex items-center justify-between border-b border-surface-border-strong px-ds-05 py-ds-04", children: [
193
+ /* @__PURE__ */ a("div", { className: "flex items-center gap-ds-03", children: [
194
+ /* @__PURE__ */ e("h3", { className: "text-ds-md font-semibold text-surface-fg", children: "Notifications" }),
195
+ n > 0 && /* @__PURE__ */ e("span", { className: "flex h-5 min-w-5 items-center justify-center rounded-ds-full bg-accent-2 px-ds-02b text-ds-sm font-semibold text-accent-11", children: n })
196
196
  ] }),
197
- /* @__PURE__ */ l("div", { className: "flex items-center gap-ds-03", children: [
198
- n > 0 && r && /* @__PURE__ */ l(
197
+ /* @__PURE__ */ a("div", { className: "flex items-center gap-ds-03", children: [
198
+ n > 0 && r && /* @__PURE__ */ a(
199
199
  "button",
200
200
  {
201
201
  type: "button",
202
202
  onClick: r,
203
203
  className: "flex items-center gap-ds-02 text-ds-sm text-surface-fg-subtle transition-colors hover:text-accent-11",
204
204
  children: [
205
- /* @__PURE__ */ t(L, { className: "h-ico-sm w-ico-sm" }),
205
+ /* @__PURE__ */ e(U, { className: "h-ico-sm w-ico-sm" }),
206
206
  "Mark all read"
207
207
  ]
208
208
  }
209
209
  ),
210
- I
210
+ C
211
211
  ] })
212
212
  ] }),
213
- /* @__PURE__ */ l(
213
+ /* @__PURE__ */ a(
214
214
  "div",
215
215
  {
216
- ref: N,
217
- onScroll: E,
216
+ ref: y,
217
+ onScroll: S,
218
218
  className: "max-h-[420px] overflow-y-auto",
219
219
  children: [
220
- e.length === 0 ? C || /* @__PURE__ */ l("div", { className: "flex flex-col items-center justify-center px-ds-05 py-ds-09", children: [
221
- /* @__PURE__ */ t("div", { className: "flex h-ds-lg w-ds-lg items-center justify-center rounded-ds-full bg-surface-2", children: /* @__PURE__ */ t(Q, { className: "h-ico-lg w-ico-lg text-surface-fg-subtle" }) }),
222
- /* @__PURE__ */ t("p", { className: "mt-ds-04 text-ds-md text-surface-fg-subtle", children: "No notifications yet" }),
223
- /* @__PURE__ */ t("p", { className: "mt-ds-02 text-ds-sm text-surface-fg-subtle", children: "You're all caught up!" })
224
- ] }) : A.map((s) => {
225
- const m = S[s];
226
- return !m || m.length === 0 ? null : /* @__PURE__ */ l("div", { children: [
227
- /* @__PURE__ */ t("div", { className: "sticky top-0 z-raised bg-surface-1 px-ds-05 py-ds-02b", children: /* @__PURE__ */ t("span", { className: "text-ds-sm font-medium text-surface-fg-subtle", children: s }) }),
228
- m.map((f) => /* @__PURE__ */ t(
229
- M,
220
+ t.length === 0 ? T || /* @__PURE__ */ a("div", { className: "flex flex-col items-center justify-center px-ds-05 py-ds-09", children: [
221
+ /* @__PURE__ */ e("div", { className: "flex h-ds-lg w-ds-lg items-center justify-center rounded-ds-full bg-surface-2", children: /* @__PURE__ */ e(V, { className: "h-ico-lg w-ico-lg text-surface-fg-subtle" }) }),
222
+ /* @__PURE__ */ e("p", { className: "mt-ds-04 text-ds-md text-surface-fg-subtle", children: "No notifications yet" }),
223
+ /* @__PURE__ */ e("p", { className: "mt-ds-02 text-ds-sm text-surface-fg-subtle", children: "You're all caught up!" })
224
+ ] }) : H.map((s) => {
225
+ const m = A[s];
226
+ return !m || m.length === 0 ? null : /* @__PURE__ */ a("div", { children: [
227
+ /* @__PURE__ */ e("div", { className: "sticky top-0 z-raised bg-surface-1 px-ds-05 py-ds-02b", children: /* @__PURE__ */ e("span", { className: "text-ds-sm font-medium text-surface-fg-subtle", children: s }) }),
228
+ m.map((f, O) => /* @__PURE__ */ e(
229
+ N.div,
230
230
  {
231
- notification: f,
232
- onRead: Y,
233
- onNavigate: K,
234
- getRoute: P,
235
- onDismiss: D
231
+ initial: { opacity: 0 },
232
+ animate: { opacity: 1 },
233
+ transition: { delay: O * 0.03 },
234
+ children: /* @__PURE__ */ e(
235
+ ee,
236
+ {
237
+ notification: f,
238
+ onRead: E,
239
+ onNavigate: Y,
240
+ getRoute: K,
241
+ onDismiss: I
242
+ }
243
+ )
236
244
  },
237
245
  f.id
238
246
  ))
239
247
  ] }, s);
240
248
  }),
241
- u && /* @__PURE__ */ t("div", { className: "flex items-center justify-center py-ds-05", children: /* @__PURE__ */ t(V, {}) })
249
+ u && /* @__PURE__ */ e("div", { className: "flex items-center justify-center py-ds-05", children: /* @__PURE__ */ e(Z, {}) })
242
250
  ]
243
251
  }
244
252
  ),
245
- b && /* @__PURE__ */ t("div", { className: "border-t border-surface-border-strong px-ds-05 py-ds-03", children: b })
253
+ b && /* @__PURE__ */ e("div", { className: "border-t border-surface-border-strong px-ds-05 py-ds-03", children: b })
246
254
  ]
247
255
  }
248
256
  )
249
257
  ] });
250
258
  }
251
259
  );
252
- ee.displayName = "NotificationCenter";
260
+ te.displayName = "NotificationCenter";
253
261
  export {
254
- ee as NotificationCenter
262
+ te as NotificationCenter
255
263
  };
@@ -45,7 +45,7 @@ function re({ className: r }) {
45
45
  }
46
46
  );
47
47
  }
48
- const B = "relative gap-ds-04 rounded-ds-lg px-ds-04 py-ds-03 transition-colors", F = "bg-accent-2 text-accent-11 after:absolute after:right-0 after:top-0 after:h-full after:w-ds-01 after:rounded-l-ds-full after:bg-accent-9 after:content-['']", G = "text-surface-fg-subtle hover:bg-surface-3 hover:text-surface-fg";
48
+ const B = "relative gap-ds-04 rounded-ds-lg px-ds-04 py-ds-03 transition-colors duration-fast-02", F = "bg-accent-2 text-accent-11 after:absolute after:right-0 after:top-0 after:h-full after:w-ds-01 after:rounded-l-ds-full after:bg-accent-9 after:content-['']", G = "text-surface-fg-subtle hover:bg-surface-3 hover:text-surface-fg";
49
49
  function se({
50
50
  item: r,
51
51
  isActive: t,
@@ -216,7 +216,7 @@ const ne = m.forwardRef(
216
216
  ] }),
217
217
  a ? /* @__PURE__ */ s(M, { className: "gap-ds-03 px-ds-06 py-ds-05", children: [
218
218
  a.slot && /* @__PURE__ */ e("div", { children: a.slot }),
219
- a.promo && /* @__PURE__ */ s("div", { className: "relative rounded-ds-lg border border-surface-border bg-surface-2 p-ds-04", children: [
219
+ a.promo && /* @__PURE__ */ s("div", { className: "relative rounded-ds-lg border border-surface-border bg-surface-2 p-ds-04 shadow-01", children: [
220
220
  a.promo.onDismiss && /* @__PURE__ */ e(
221
221
  "button",
222
222
  {
@@ -87,7 +87,7 @@ const C = l.forwardRef(({ icon: r, tooltip: s, className: t, ...a }, n) => /* @_
87
87
  ref: n,
88
88
  type: "button",
89
89
  className: d(
90
- "flex h-ds-sm-plus w-ds-sm-plus items-center justify-center rounded-ds-full border border-surface-border-strong bg-surface-3 text-surface-fg-muted transition-colors hover:bg-surface-4",
90
+ "flex h-ds-sm-plus w-ds-sm-plus items-center justify-center rounded-ds-full border border-surface-border-strong bg-surface-3 text-surface-fg-muted transition-[color,background-color,border-color,transform] hover:bg-surface-4 active:scale-90 duration-fast-01 ease-productive-standard",
91
91
  t
92
92
  ),
93
93
  ...a,
@@ -97,7 +97,7 @@ const C = l.forwardRef(({ icon: r, tooltip: s, className: t, ...a }, n) => /* @_
97
97
  /* @__PURE__ */ e(w, { side: "bottom", align: "center", children: s })
98
98
  ] }));
99
99
  C.displayName = "TopBar.IconButton";
100
- const M = l.forwardRef(
100
+ const k = l.forwardRef(
101
101
  ({ className: r, children: s, ...t }, a) => /* @__PURE__ */ e(
102
102
  "h2",
103
103
  {
@@ -111,11 +111,11 @@ const M = l.forwardRef(
111
111
  }
112
112
  )
113
113
  );
114
- M.displayName = "TopBar.Title";
115
- const R = l.forwardRef(
114
+ k.displayName = "TopBar.Title";
115
+ const M = l.forwardRef(
116
116
  ({ user: r, onNavigate: s, onLogout: t, userMenuItems: a, className: n }, i) => {
117
117
  var u;
118
- const { colorMode: m, toggleColorMode: k } = U();
118
+ const { colorMode: m, toggleColorMode: R } = U();
119
119
  return /* @__PURE__ */ c(S, { children: [
120
120
  /* @__PURE__ */ c(x, { children: [
121
121
  /* @__PURE__ */ e(b, { asChild: !0, children: /* @__PURE__ */ e(F, { asChild: !0, children: /* @__PURE__ */ e(
@@ -196,7 +196,7 @@ const R = l.forwardRef(
196
196
  f,
197
197
  {
198
198
  className: "flex w-full cursor-pointer items-center gap-ds-03 px-ds-05 py-ds-04 hover:bg-surface-2",
199
- onClick: k,
199
+ onClick: R,
200
200
  children: [
201
201
  m === "dark" ? /* @__PURE__ */ e(z, { className: "h-ico-sm w-ico-sm text-surface-fg-muted" }) : /* @__PURE__ */ e(E, { className: "h-ico-sm w-ico-sm text-surface-fg-muted" }),
202
202
  /* @__PURE__ */ e("span", { className: "text-ds-md text-surface-fg-muted", children: m === "dark" ? "Light Mode" : "Dark Mode" })
@@ -223,15 +223,15 @@ const R = l.forwardRef(
223
223
  ] });
224
224
  }
225
225
  );
226
- R.displayName = "TopBar.UserMenu";
226
+ M.displayName = "TopBar.UserMenu";
227
227
  const X = Object.assign(N, {
228
228
  Left: T,
229
229
  Center: p,
230
230
  Right: y,
231
231
  Section: B,
232
232
  IconButton: C,
233
- Title: M,
234
- UserMenu: R
233
+ Title: k,
234
+ UserMenu: M
235
235
  });
236
236
  export {
237
237
  X as TopBar
@@ -1,4 +1,5 @@
1
- const r = {
1
+ import { aj as a } from "../_chunks/vendor-utils.js";
2
+ const o = {
2
3
  /**
3
4
  * Dark mode uses the `.dark` class strategy. If your app uses `darkMode: 'media'`,
4
5
  * set it explicitly in your own tailwind.config — your config takes precedence.
@@ -345,10 +346,36 @@ const r = {
345
346
  popover: "var(--z-popover)",
346
347
  toast: "var(--z-toast)",
347
348
  tooltip: "var(--z-tooltip)"
349
+ },
350
+ fontVariantNumeric: {
351
+ tabular: "tabular-nums"
348
352
  }
349
353
  }
350
354
  },
351
- plugins: []
355
+ plugins: [
356
+ a(({ addUtilities: r }) => {
357
+ r({
358
+ ".focus-ring": {
359
+ "&:focus-visible": {
360
+ outline: "none",
361
+ "box-shadow": "0 0 0 2px var(--color-surface-1), 0 0 0 4px var(--color-accent-9)"
362
+ }
363
+ },
364
+ ".focus-ring-inset": {
365
+ "&:focus-visible": {
366
+ outline: "none",
367
+ "box-shadow": "inset 0 0 0 2px var(--color-accent-9)"
368
+ }
369
+ },
370
+ ".focus-ring-sm": {
371
+ "&:focus-visible": {
372
+ outline: "none",
373
+ "box-shadow": "0 0 0 1px var(--color-accent-7)"
374
+ }
375
+ }
376
+ });
377
+ })
378
+ ]
352
379
  };
353
- module.exports = r;
380
+ module.exports = o;
354
381
  module.exports.default = module.exports;
@@ -1 +1 @@
1
- {"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../../src/tailwind/preset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,QAAA,MAAM,MAAM,EAAE,OAAO,CAAC,MAAM,CAsW3B,CAAA;AAED,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../../src/tailwind/preset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,QAAA,MAAM,MAAM,EAAE,OAAO,CAAC,MAAM,CAiY3B,CAAA;AAED,eAAe,MAAM,CAAA"}
@@ -1,4 +1,5 @@
1
- const r = {
1
+ import { aj as a } from "../_chunks/vendor-utils.js";
2
+ const o = {
2
3
  /**
3
4
  * Dark mode uses the `.dark` class strategy. If your app uses `darkMode: 'media'`,
4
5
  * set it explicitly in your own tailwind.config — your config takes precedence.
@@ -345,11 +346,37 @@ const r = {
345
346
  popover: "var(--z-popover)",
346
347
  toast: "var(--z-toast)",
347
348
  tooltip: "var(--z-tooltip)"
349
+ },
350
+ fontVariantNumeric: {
351
+ tabular: "tabular-nums"
348
352
  }
349
353
  }
350
354
  },
351
- plugins: []
355
+ plugins: [
356
+ a(({ addUtilities: r }) => {
357
+ r({
358
+ ".focus-ring": {
359
+ "&:focus-visible": {
360
+ outline: "none",
361
+ "box-shadow": "0 0 0 2px var(--color-surface-1), 0 0 0 4px var(--color-accent-9)"
362
+ }
363
+ },
364
+ ".focus-ring-inset": {
365
+ "&:focus-visible": {
366
+ outline: "none",
367
+ "box-shadow": "inset 0 0 0 2px var(--color-accent-9)"
368
+ }
369
+ },
370
+ ".focus-ring-sm": {
371
+ "&:focus-visible": {
372
+ outline: "none",
373
+ "box-shadow": "0 0 0 1px var(--color-accent-7)"
374
+ }
375
+ }
376
+ });
377
+ })
378
+ ]
352
379
  };
353
380
  export {
354
- r as default
381
+ o as default
355
382
  };
@@ -258,11 +258,11 @@
258
258
  /* ═══════════════════════════════════════════════════════════
259
259
  SHADOWS
260
260
  ═══════════════════════════════════════════════════════════ */
261
- --shadow-01: 0 1px 2px oklch(0 0 0 / 0.10);
262
- --shadow-02: 0 2px 6px oklch(0 0 0 / 0.12);
263
- --shadow-03: 0 4px 16px oklch(0 0 0 / 0.14);
264
- --shadow-04: 0 8px 32px oklch(0 0 0 / 0.18);
265
- --shadow-05: 0 16px 48px oklch(0 0 0 / 0.22);
261
+ --shadow-01: 0 1px 1px oklch(0 0 0 / 0.06), 0 1px 3px oklch(0 0 0 / 0.10), 0 2px 6px oklch(0 0 0 / 0.08);
262
+ --shadow-02: 0 1px 2px oklch(0 0 0 / 0.08), 0 4px 8px oklch(0 0 0 / 0.12), 0 8px 24px oklch(0 0 0 / 0.10);
263
+ --shadow-03: 0 2px 4px oklch(0 0 0 / 0.08), 0 8px 16px oklch(0 0 0 / 0.12), 0 16px 40px oklch(0 0 0 / 0.10);
264
+ --shadow-04: 0 2px 4px oklch(0 0 0 / 0.10), 0 12px 24px oklch(0 0 0 / 0.14), 0 24px 56px oklch(0 0 0 / 0.12);
265
+ --shadow-05: 0 4px 8px oklch(0 0 0 / 0.10), 0 16px 32px oklch(0 0 0 / 0.16), 0 32px 64px oklch(0 0 0 / 0.14);
266
266
  --shadow-brand: 0 4px 16px oklch(0.55 0.19 360 / 0.25);
267
267
 
268
268
  /* ═══════════════════════════════════════════════════════════
@@ -372,11 +372,11 @@
372
372
  --color-skeleton-shimmer: var(--neutral-3);
373
373
 
374
374
  /* Shadows (heavier in dark mode) */
375
- --shadow-01: 0 1px 2px oklch(0 0 0 / 0.30);
376
- --shadow-02: 0 2px 6px oklch(0 0 0 / 0.40);
377
- --shadow-03: 0 4px 16px oklch(0 0 0 / 0.50);
378
- --shadow-04: 0 8px 32px oklch(0 0 0 / 0.60);
379
- --shadow-05: 0 16px 48px oklch(0 0 0 / 0.70);
375
+ --shadow-01: 0 1px 1px oklch(0 0 0 / 0.15), 0 1px 3px oklch(0 0 0 / 0.25), 0 2px 6px oklch(0 0 0 / 0.20);
376
+ --shadow-02: 0 1px 2px oklch(0 0 0 / 0.20), 0 4px 8px oklch(0 0 0 / 0.30), 0 8px 24px oklch(0 0 0 / 0.25);
377
+ --shadow-03: 0 2px 4px oklch(0 0 0 / 0.20), 0 8px 16px oklch(0 0 0 / 0.30), 0 16px 40px oklch(0 0 0 / 0.25);
378
+ --shadow-04: 0 2px 4px oklch(0 0 0 / 0.25), 0 12px 24px oklch(0 0 0 / 0.35), 0 24px 56px oklch(0 0 0 / 0.30);
379
+ --shadow-05: 0 4px 8px oklch(0 0 0 / 0.25), 0 16px 32px oklch(0 0 0 / 0.40), 0 32px 64px oklch(0 0 0 / 0.35);
380
380
  --shadow-brand: 0 4px 16px oklch(0.55 0.19 360 / 0.35);
381
381
 
382
382
  /* Gradients */
@@ -18,12 +18,12 @@
18
18
  --typo-heading-2xl-size: var(--font-size-6xl);
19
19
  --typo-heading-2xl-weight: var(--font-weight-regular);
20
20
  --typo-heading-2xl-leading: var(--line-height-tight);
21
- --typo-heading-2xl-tracking: -0.02em;
21
+ --typo-heading-2xl-tracking: -0.025em;
22
22
 
23
23
  --typo-heading-xl-size: var(--font-size-5xl);
24
24
  --typo-heading-xl-weight: var(--font-weight-regular);
25
25
  --typo-heading-xl-leading: var(--line-height-tight);
26
- --typo-heading-xl-tracking: -0.02em;
26
+ --typo-heading-xl-tracking: -0.025em;
27
27
 
28
28
  --typo-heading-lg-size: var(--font-size-4xl);
29
29
  --typo-heading-lg-weight: var(--font-weight-regular);
@@ -38,7 +38,7 @@
38
38
  --typo-heading-sm-size: var(--font-size-2xl);
39
39
  --typo-heading-sm-weight: var(--font-weight-regular);
40
40
  --typo-heading-sm-leading: var(--line-height-snug);
41
- --typo-heading-sm-tracking: -0.02em;
41
+ --typo-heading-sm-tracking: -0.015em;
42
42
 
43
43
  --typo-heading-xs-size: var(--font-size-xl);
44
44
  --typo-heading-xs-weight: var(--font-weight-regular);