@nexub/patterns 6.5.0 → 6.6.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.
@@ -0,0 +1,67 @@
1
+ 'use client';
2
+ import {
3
+ NotificationItem
4
+ } from "./chunk-RQARH2AX.js";
5
+
6
+ // src/components/NotificationCenter/NotificationCenter.tsx
7
+ import * as React from "react";
8
+ import { Button, IconButton, Popover, cn, useNexubMessages } from "@nexub/react";
9
+ import { Bell } from "@nexub/icons";
10
+ import { jsx, jsxs } from "react/jsx-runtime";
11
+ function NotificationCenter({
12
+ notifications,
13
+ onOpen,
14
+ onDismiss,
15
+ onMarkAllRead,
16
+ emptyText,
17
+ className
18
+ }) {
19
+ const t = useNexubMessages();
20
+ const unread = notifications.filter((n) => !n.read).length;
21
+ const headingId = React.useId();
22
+ const shown = unread > 99 ? "99+" : String(unread);
23
+ return /* @__PURE__ */ jsxs(Popover.Root, { children: [
24
+ /* @__PURE__ */ jsx(Popover.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs(
25
+ IconButton,
26
+ {
27
+ variant: "ghost",
28
+ label: unread ? `${t.notificationCenter}, ${t.unreadNotifications(unread)}` : t.notificationCenter,
29
+ className: cn("relative", className),
30
+ children: [
31
+ /* @__PURE__ */ jsx(Bell, { size: "sm", "aria-hidden": "true" }),
32
+ unread > 0 && /* @__PURE__ */ jsx(
33
+ "span",
34
+ {
35
+ "aria-hidden": "true",
36
+ className: "absolute -end-0.5 -top-0.5 inline-flex h-4 min-w-4 items-center justify-center rounded-full bg-[var(--color-error)] px-1 text-[10px] font-semibold tabular-nums leading-none text-[var(--color-on-error)]",
37
+ children: shown
38
+ }
39
+ )
40
+ ]
41
+ }
42
+ ) }),
43
+ /* @__PURE__ */ jsxs(Popover.Content, { align: "end", "aria-labelledby": headingId, className: "flex w-96 max-w-[calc(100vw-2rem)] flex-col gap-1 p-2", children: [
44
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2 px-2 py-1", children: [
45
+ /* @__PURE__ */ jsx("h2", { id: headingId, className: "text-title-sm font-semibold text-[var(--color-on-surface)]", children: t.notificationCenter }),
46
+ onMarkAllRead && unread > 0 && /* @__PURE__ */ jsx(Button, { variant: "text", size: "sm", onClick: onMarkAllRead, children: t.markAllRead })
47
+ ] }),
48
+ notifications.length ? /* @__PURE__ */ jsx("ul", { className: "m-0 flex max-h-[min(28rem,70vh)] list-none flex-col gap-1 overflow-y-auto p-0", children: notifications.map((n) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
49
+ NotificationItem,
50
+ {
51
+ title: n.title,
52
+ description: n.description,
53
+ timestamp: n.timestamp,
54
+ read: n.read,
55
+ icon: n.icon,
56
+ href: n.href,
57
+ onSelect: onOpen ? () => onOpen(n.id) : void 0,
58
+ onDismiss: onDismiss ? () => onDismiss(n.id) : void 0
59
+ }
60
+ ) }, n.id)) }) : /* @__PURE__ */ jsx("p", { className: "px-2 py-6 text-center text-body-md text-[var(--color-on-surface-muted)]", children: emptyText ?? t.noNotifications })
61
+ ] })
62
+ ] });
63
+ }
64
+
65
+ export {
66
+ NotificationCenter
67
+ };
@@ -0,0 +1 @@
1
+ 'use client';
@@ -4,15 +4,16 @@
4
4
  import * as React from "react";
5
5
  import { cn, useNexubMessages } from "@nexub/react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
+ var stretched = "outline-none after:absolute after:inset-0 after:rounded-shape-container focus-visible:after:outline focus-visible:after:outline-2 focus-visible:after:outline-[var(--color-primary)]";
7
8
  var NotificationItem = React.forwardRef(
8
- ({ title, description, timestamp, read = false, icon, onDismiss, className, ...props }, ref) => {
9
+ ({ title, description, timestamp, read = false, icon, onDismiss, href, onSelect, className, ...props }, ref) => {
9
10
  const t = useNexubMessages();
10
11
  return /* @__PURE__ */ jsxs(
11
12
  "div",
12
13
  {
13
14
  ref,
14
15
  className: cn(
15
- "nx-state-layer flex items-start gap-3 p-3 rounded-shape-container",
16
+ "nx-state-layer relative flex items-start gap-3 p-3 rounded-shape-container",
16
17
  !read && "bg-[var(--color-surface-container-low)]",
17
18
  className
18
19
  ),
@@ -28,7 +29,7 @@ var NotificationItem = React.forwardRef(
28
29
  ),
29
30
  icon && /* @__PURE__ */ jsx("div", { className: "shrink-0 mt-0.5", children: icon }),
30
31
  /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
31
- /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-[var(--color-on-surface)] truncate", children: title }),
32
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-[var(--color-on-surface)] truncate", children: href ? /* @__PURE__ */ jsx("a", { href, onClick: onSelect, className: stretched, children: title }) : onSelect ? /* @__PURE__ */ jsx("button", { type: "button", onClick: onSelect, className: cn("text-start", stretched), children: title }) : title }),
32
33
  description && /* @__PURE__ */ jsx("p", { className: "text-sm text-[var(--color-on-surface-muted)] mt-0.5 line-clamp-2", children: description }),
33
34
  timestamp && /* @__PURE__ */ jsx("time", { className: "text-xs text-[var(--color-on-surface-muted)] mt-1 block", children: timestamp })
34
35
  ] }),
@@ -38,7 +39,7 @@ var NotificationItem = React.forwardRef(
38
39
  type: "button",
39
40
  onClick: onDismiss,
40
41
  "aria-label": t.dismissNotification,
41
- className: "shrink-0 text-[var(--color-on-surface-muted)] hover:text-[var(--color-on-surface)] p-1 rounded-shape-control",
42
+ className: "relative z-[1] shrink-0 text-[var(--color-on-surface-muted)] hover:text-[var(--color-on-surface)] p-1 rounded-shape-control",
42
43
  children: "\xD7"
43
44
  }
44
45
  )
@@ -0,0 +1,8 @@
1
+ 'use client';
2
+ import {
3
+ NotificationCenter
4
+ } from "../../chunk-464UFQKG.js";
5
+ import "../../chunk-RQARH2AX.js";
6
+ export {
7
+ NotificationCenter
8
+ };
@@ -1,7 +1,8 @@
1
1
  'use client';
2
+ import "../../chunk-EQQOVRRM.js";
2
3
  import {
3
4
  NotificationItem
4
- } from "../../chunk-23Q75ADU.js";
5
+ } from "../../chunk-RQARH2AX.js";
5
6
  export {
6
7
  NotificationItem
7
8
  };
package/dist/index.d.ts CHANGED
@@ -158,9 +158,39 @@ interface NotificationItemProps extends React.HTMLAttributes<HTMLDivElement> {
158
158
  read?: boolean;
159
159
  icon?: React.ReactNode;
160
160
  onDismiss?: () => void;
161
+ /** Makes the whole item a link to the notification's target. */
162
+ href?: string;
163
+ /** Makes the whole item a button (when there's no `href`). */
164
+ onSelect?: () => void;
161
165
  }
162
166
  declare const NotificationItem: React.ForwardRefExoticComponent<NotificationItemProps & React.RefAttributes<HTMLDivElement>>;
163
167
 
168
+ interface NotificationCenterItem {
169
+ id: string;
170
+ title: string;
171
+ description?: string;
172
+ timestamp?: string;
173
+ read?: boolean;
174
+ icon?: React.ReactNode;
175
+ /** Where the notification leads. */
176
+ href?: string;
177
+ }
178
+ interface NotificationCenterProps {
179
+ notifications: NotificationCenterItem[];
180
+ /** Called when a notification is opened (clicked or Enter). */
181
+ onOpen?: (id: string) => void;
182
+ onDismiss?: (id: string) => void;
183
+ onMarkAllRead?: () => void;
184
+ /** Shown when there are no notifications. */
185
+ emptyText?: React.ReactNode;
186
+ className?: string;
187
+ }
188
+ /**
189
+ * A bell button with an unread count that opens the notification list.
190
+ * Your app owns the notifications and their read state.
191
+ */
192
+ declare function NotificationCenter({ notifications, onOpen, onDismiss, onMarkAllRead, emptyText, className, }: NotificationCenterProps): React.JSX.Element;
193
+
164
194
  interface AppLauncherApp {
165
195
  id: string;
166
196
  name: string;
@@ -712,5 +742,5 @@ interface DashboardPageProps extends Omit<PageFrameProps, 'title' | 'children'>
712
742
  */
713
743
  declare const DashboardPage: React.ForwardRefExoticComponent<DashboardPageProps & React.RefAttributes<HTMLElement>>;
714
744
 
715
- export { ActivityFeed, ActivityPage, AppHeader, AppLauncher, AuthCard, BentoGrid, BentoTile, ChatPage, CheckoutPage, Conversation, DashboardPage, ErrorSummary, FilterBar, InfoList, ListDetail, NotificationItem, PageFrame, PaywallPage, PlanCard, SettingsLayout, SettingsPage, SettingsRow, SettingsSection, SignInPage, StatCard, StepIndicator, TransactionDetailPage, TransactionRow, UserCard, defaultPageTemplateMessages, groupByDay, useFormErrors, usePageMessages };
716
- export type { ActivityItemProps, ActivityPageProps, AppHeaderOrg, AppHeaderProps, AppHeaderSearchGroup, AppHeaderSearchItem, AppHeaderUser, AppLauncherApp, AppLauncherProps, AuthCardProps, BentoGridProps, BentoTileProps, BentoTileSize, ChatMessage, ChatPageProps, CheckoutPageProps, ConversationMessages, ConversationProps, DashboardPageProps, DashboardStat, ErrorSummaryItem, ErrorSummaryProps, FilterBarProps, FormErrorMap, InfoListItemProps, InfoListRootProps, Insight, ListDetailProps, NotificationItemProps, PageFrameProps, PageTemplateMessages, PaywallPageProps, Plan, PlanCardProps, QuickAction, Quote, ReviewRow, SettingsGroup, SettingsItem, SettingsLayoutItem, SettingsLayoutProps, SettingsLayoutSectionProps, SettingsPageProps, SettingsRowProps, SettingsSectionProps, SignInPageProps, StatCardProps, StepIndicatorProps, StepIndicatorStep, Transaction, TransactionDetailPageProps, UserCardProps };
745
+ export { ActivityFeed, ActivityPage, AppHeader, AppLauncher, AuthCard, BentoGrid, BentoTile, ChatPage, CheckoutPage, Conversation, DashboardPage, ErrorSummary, FilterBar, InfoList, ListDetail, NotificationCenter, NotificationItem, PageFrame, PaywallPage, PlanCard, SettingsLayout, SettingsPage, SettingsRow, SettingsSection, SignInPage, StatCard, StepIndicator, TransactionDetailPage, TransactionRow, UserCard, defaultPageTemplateMessages, groupByDay, useFormErrors, usePageMessages };
746
+ export type { ActivityItemProps, ActivityPageProps, AppHeaderOrg, AppHeaderProps, AppHeaderSearchGroup, AppHeaderSearchItem, AppHeaderUser, AppLauncherApp, AppLauncherProps, AuthCardProps, BentoGridProps, BentoTileProps, BentoTileSize, ChatMessage, ChatPageProps, CheckoutPageProps, ConversationMessages, ConversationProps, DashboardPageProps, DashboardStat, ErrorSummaryItem, ErrorSummaryProps, FilterBarProps, FormErrorMap, InfoListItemProps, InfoListRootProps, Insight, ListDetailProps, NotificationCenterItem, NotificationCenterProps, NotificationItemProps, PageFrameProps, PageTemplateMessages, PaywallPageProps, Plan, PlanCardProps, QuickAction, Quote, ReviewRow, SettingsGroup, SettingsItem, SettingsLayoutItem, SettingsLayoutProps, SettingsLayoutSectionProps, SettingsPageProps, SettingsRowProps, SettingsSectionProps, SignInPageProps, StatCardProps, StepIndicatorProps, StepIndicatorStep, Transaction, TransactionDetailPageProps, UserCardProps };
package/dist/index.js CHANGED
@@ -8,6 +8,7 @@ import {
8
8
  import {
9
9
  UserCard
10
10
  } from "./chunk-7NYGYETG.js";
11
+ import "./chunk-EQQOVRRM.js";
11
12
  import "./chunk-RFCPEZGF.js";
12
13
  import {
13
14
  PaywallPage
@@ -50,9 +51,12 @@ import {
50
51
  import {
51
52
  ListDetail
52
53
  } from "./chunk-5JU6HUVJ.js";
54
+ import {
55
+ NotificationCenter
56
+ } from "./chunk-464UFQKG.js";
53
57
  import {
54
58
  NotificationItem
55
- } from "./chunk-23Q75ADU.js";
59
+ } from "./chunk-RQARH2AX.js";
56
60
  import {
57
61
  ActivityFeed
58
62
  } from "./chunk-GHOBXWUA.js";
@@ -103,6 +107,7 @@ export {
103
107
  FilterBar,
104
108
  InfoList,
105
109
  ListDetail,
110
+ NotificationCenter,
106
111
  NotificationItem,
107
112
  PageFrame,
108
113
  PaywallPage,
package/dist/styles.css CHANGED
@@ -1,2 +1,2 @@
1
1
  /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--spacing:.25rem;--container-3xl:48rem;--container-6xl:72rem;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer base,components;@layer utilities{.\[container-type\:inline-size\]{container-type:inline-size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-x-0{inset-inline:var(--spacing-0)}.start-4{inset-inline-start:var(--spacing-4)}.-top-3{top:calc(var(--spacing-3) * -1)}.top-0{top:var(--spacing-0)}.top-8{top:var(--spacing-8)}.top-\[var\(--app-header-height\,64px\)\]{top:var(--app-header-height,64px)}.bottom-4{bottom:var(--spacing-4)}.left-1\/2{left:50%}.z-10{z-index:10}.row-span-2{grid-row:span 2/span 2}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.-ms-2{margin-inline-start:calc(var(--spacing-2) * -1)}.ms-1{margin-inline-start:var(--spacing-1)}.ms-auto{margin-inline-start:auto}.me-1{margin-inline-end:var(--spacing-1)}.me-2{margin-inline-end:var(--spacing-2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing-1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:var(--spacing-2)}.mt-auto{margin-top:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:var(--spacing-2)}.h-8{height:var(--spacing-8)}.h-9{height:var(--spacing-9)}.h-10{height:var(--spacing-10)}.h-20{height:var(--spacing-20)}.h-\[calc\(100vh-var\(--app-header-height\,64px\)\)\]{height:calc(100vh - var(--app-header-height,64px))}.h-\[var\(--app-header-height\,64px\)\]{height:var(--app-header-height,64px)}.h-dvh{height:100dvh}.h-full{height:100%}.min-h-0{min-height:var(--spacing-0)}.min-h-\[56px\]{min-height:56px}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:var(--spacing-2)}.w-8{width:var(--spacing-8)}.w-10{width:var(--spacing-10)}.w-20{width:var(--spacing-20)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-full{width:100%}.w-px{width:1px;width:var(--spacing-px)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[6rem\]{max-width:6rem}.max-w-\[400px\]{max-width:400px}.max-w-\[480px\]{max-width:480px}.max-w-\[calc\(100vw-1rem\)\]{max-width:calc(100vw - 1rem)}.max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.max-w-xl{max-width:36rem}.min-w-0{min-width:var(--spacing-0)}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.grid-flow-row-dense{grid-auto-flow:dense}.auto-rows-\[minmax\(10rem\,auto\)\]{grid-auto-rows:minmax(10rem,auto)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:var(--spacing-0)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing-1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:var(--spacing-2)}.gap-3{gap:var(--spacing-3)}.gap-4{gap:var(--spacing-4)}.gap-5{gap:var(--spacing-5)}.gap-6{gap:var(--spacing-6)}.gap-8{gap:var(--spacing-8)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-\[var\(--color-outline-variant\)\]>:not(:last-child)){border-color:var(--color-outline-variant)}.self-center{align-self:center}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-\[8px\]{border-radius:8px}.rounded-\[12px\]{border-radius:12px}.rounded-full{border-radius:var(--radius-full)}.rounded-shape-container{border-radius:var(--shape-container)}.rounded-shape-control{border-radius:var(--shape-control)}.rounded-shape-field{border-radius:var(--shape-field)}.rounded-shape-min{border-radius:var(--shape-min)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-s-4{border-inline-start-style:var(--tw-border-style);border-inline-start-width:4px}.border-e-0{border-inline-end-style:var(--tw-border-style);border-inline-end-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-\[color-mix\(in_srgb\,var\(--color-outline-variant\)_60\%\,transparent\)\]{border-color:var(--color-outline-variant)}@supports (color:color-mix(in lab, red, red)){.border-\[color-mix\(in_srgb\,var\(--color-outline-variant\)_60\%\,transparent\)\]{border-color:color-mix(in srgb,var(--color-outline-variant) 60%,transparent)}}.border-\[var\(--color-outline-variant\)\]{border-color:var(--color-outline-variant)}.border-\[var\(--color-primary\)\]{border-color:var(--color-primary)}.border-s-\[var\(--color-error\)\]{border-inline-start-color:var(--color-error)}.bg-\[var\(--color-error-container\)\]{background-color:var(--color-error-container)}.bg-\[var\(--color-outline-variant\)\]{background-color:var(--color-outline-variant)}.bg-\[var\(--color-primary\)\]{background-color:var(--color-primary)}.bg-\[var\(--color-success-container\)\]{background-color:var(--color-success-container)}.bg-\[var\(--color-surface\)\]{background-color:var(--color-surface)}.bg-\[var\(--color-surface-container-low\)\]{background-color:var(--color-surface-container-low)}.bg-\[var\(--color-surface-elevated\)\]{background-color:var(--color-surface-elevated)}.bg-current{background-color:currentColor}.\[mask-image\:linear-gradient\(to_bottom\,black_calc\(100\%-24px\)\,transparent\)\]{-webkit-mask-image:linear-gradient(#000 calc(100% - 24px),#0000);mask-image:linear-gradient(#000 calc(100% - 24px),#0000)}.object-cover{object-fit:cover}.p-1{padding:var(--spacing-1)}.p-2{padding:var(--spacing-2)}.p-3{padding:var(--spacing-3)}.p-4{padding:var(--spacing-4)}.p-6{padding:var(--spacing-6)}.px-0{padding-inline:var(--spacing-0)}.px-1{padding-inline:var(--spacing-1)}.px-2{padding-inline:var(--spacing-2)}.px-3{padding-inline:var(--spacing-3)}.px-4{padding-inline:var(--spacing-4)}.px-5{padding-inline:var(--spacing-5)}.py-1{padding-block:var(--spacing-1)}.py-2{padding-block:var(--spacing-2)}.py-3{padding-block:var(--spacing-3)}.py-4{padding-block:var(--spacing-4)}.py-6{padding-block:var(--spacing-6)}.py-8{padding-block:var(--spacing-8)}.py-10{padding-block:var(--spacing-10)}.py-16{padding-block:var(--spacing-16)}.ps-3{padding-inline-start:var(--spacing-3)}.pe-2{padding-inline-end:var(--spacing-2)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-4{padding-top:var(--spacing-4)}.pt-5{padding-top:var(--spacing-5)}.pt-6{padding-top:var(--spacing-6)}.pb-2{padding-bottom:var(--spacing-2)}.pb-4{padding-bottom:var(--spacing-4)}.pb-6{padding-bottom:var(--spacing-6)}.pb-8{padding-bottom:var(--spacing-8)}.text-center{text-align:center}.text-end{text-align:end}.text-start{text-align:start}.text-body-md{font-size:var(--type-body-md-size);line-height:var(--tw-leading,var(--type-body-md-lineHeight));letter-spacing:var(--tw-tracking,var(--type-body-md-letterSpacing));font-weight:var(--tw-font-weight,var(--type-body-md-weight))}.text-body-sm{font-size:var(--type-body-sm-size);line-height:var(--tw-leading,var(--type-body-sm-lineHeight));letter-spacing:var(--tw-tracking,var(--type-body-sm-letterSpacing));font-weight:var(--tw-font-weight,var(--type-body-sm-weight))}.text-headline-sm{font-size:var(--type-headline-sm-size);line-height:var(--tw-leading,var(--type-headline-sm-lineHeight));letter-spacing:var(--tw-tracking,var(--type-headline-sm-letterSpacing));font-weight:var(--tw-font-weight,var(--type-headline-sm-weight))}.text-label-lg{font-size:var(--type-label-lg-size);line-height:var(--tw-leading,var(--type-label-lg-lineHeight));letter-spacing:var(--tw-tracking,var(--type-label-lg-letterSpacing));font-weight:var(--tw-font-weight,var(--type-label-lg-weight))}.text-label-md{font-size:var(--type-label-md-size);line-height:var(--tw-leading,var(--type-label-md-lineHeight));letter-spacing:var(--tw-tracking,var(--type-label-md-letterSpacing));font-weight:var(--tw-font-weight,var(--type-label-md-weight))}.text-label-sm{font-size:var(--type-label-sm-size);line-height:var(--tw-leading,var(--type-label-sm-lineHeight));letter-spacing:var(--tw-tracking,var(--type-label-sm-letterSpacing));font-weight:var(--tw-font-weight,var(--type-label-sm-weight))}.text-title-lg{font-size:var(--type-title-lg-size);line-height:var(--tw-leading,var(--type-title-lg-lineHeight));letter-spacing:var(--tw-tracking,var(--type-title-lg-letterSpacing));font-weight:var(--tw-font-weight,var(--type-title-lg-weight))}.text-title-md{font-size:var(--type-title-md-size);line-height:var(--tw-leading,var(--type-title-md-lineHeight));letter-spacing:var(--tw-tracking,var(--type-title-md-letterSpacing));font-weight:var(--tw-font-weight,var(--type-title-md-weight))}.text-title-sm{font-size:var(--type-title-sm-size);line-height:var(--tw-leading,var(--type-title-sm-lineHeight));letter-spacing:var(--tw-tracking,var(--type-title-sm-letterSpacing));font-weight:var(--tw-font-weight,var(--type-title-sm-weight))}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,2rem)}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,2.25rem)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,1.5rem)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,1.25rem)}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,1rem)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.break-words{overflow-wrap:break-word}.text-\[var\(--color-error\)\]{color:var(--color-error)}.text-\[var\(--color-on-error-container\)\]{color:var(--color-on-error-container)}.text-\[var\(--color-on-primary\)\]{color:var(--color-on-primary)}.text-\[var\(--color-on-surface\)\]{color:var(--color-on-surface)}.text-\[var\(--color-on-surface-muted\)\]{color:var(--color-on-surface-muted)}.text-\[var\(--color-on-surface-variant\)\]{color:var(--color-on-surface-variant)}.text-\[var\(--color-primary\)\]{color:var(--color-primary)}.text-\[var\(--color-success\)\]{color:var(--color-success)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.underline-offset-\[0\.2em\]{text-underline-offset:.2em}.shadow-elevation-1{--tw-shadow:var(--elevation-1);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-elevation-2{--tw-shadow:var(--elevation-2);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.\[-webkit-mask-image\:linear-gradient\(to_bottom\,black_calc\(100\%-24px\)\,transparent\)\]{-webkit-mask-image:linear-gradient(#000 calc(100% - 24px),#0000)}.first\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}.last\:pb-0:last-child{padding-bottom:var(--spacing-0)}@media (hover:hover){.hover\:bg-\[color-mix\(in_srgb\,var\(--color-on-surface\)_8\%\,transparent\)\]:hover{background-color:var(--color-on-surface)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[color-mix\(in_srgb\,var\(--color-on-surface\)_8\%\,transparent\)\]:hover{background-color:color-mix(in srgb,var(--color-on-surface) 8%,transparent)}}.hover\:text-\[var\(--color-on-surface\)\]:hover{color:var(--color-on-surface)}}@media (min-width:40rem){.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:w-1\/3{width:33.3333%}.sm\:w-64{width:var(--spacing-64)}.sm\:max-w-\[8rem\]{max-width:8rem}.sm\:shrink{flex-shrink:1}.sm\:shrink-0{flex-shrink:0}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-center{justify-content:center}.sm\:gap-1{gap:var(--spacing-1)}.sm\:gap-2{gap:var(--spacing-2)}.sm\:gap-4{gap:var(--spacing-4)}.sm\:px-4{padding-inline:var(--spacing-4)}.sm\:px-6{padding-inline:var(--spacing-6)}}@media (min-width:48rem){.md\:ms-0{margin-inline-start:var(--spacing-0)}.md\:flex{display:flex}.md\:hidden{display:none}.md\:w-1\/3{width:33.3333%}.md\:min-w-0{min-width:var(--spacing-0)}.md\:flex-1{flex:1}.md\:flex-row{flex-direction:row}.md\:justify-center{justify-content:center}.md\:gap-8{gap:var(--spacing-8)}.md\:px-2{padding-inline:var(--spacing-2)}.md\:px-8{padding-inline:var(--spacing-8)}.md\:py-10{padding-block:var(--spacing-10)}}@media (min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:px-4{padding-inline:var(--spacing-4)}.lg\:py-10{padding-block:var(--spacing-10)}}@media (min-width:80rem){.xl\:max-w-\[12rem\]{max-width:12rem}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.rtl\:-scale-x-100:where(:dir(rtl),[dir=rtl],[dir=rtl] *){--tw-scale-x:calc(100% * -1);scale:var(--tw-scale-x) var(--tw-scale-y)}@container (min-width:480px){.\[\@container\(min-width\:480px\)\]\:col-span-2{grid-column:span 2/span 2}.\[\@container\(min-width\:480px\)\]\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@container (min-width:720px){.\[\@container\(min-width\:720px\)\]\:flex{display:flex}.\[\@container\(min-width\:720px\)\]\:hidden{display:none}.\[\@container\(min-width\:720px\)\]\:w-72{width:calc(var(--spacing) * 72)}.\[\@container\(min-width\:720px\)\]\:w-80{width:calc(var(--spacing) * 80)}.\[\@container\(min-width\:720px\)\]\:w-\[400px\]{width:400px}.\[\@container\(min-width\:720px\)\]\:border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.\[\@container\(min-width\:720px\)\]\:border-\[var\(--color-outline-variant\)\]{border-color:var(--color-outline-variant)}}@container (min-width:768px){.\[\@container\(min-width\:768px\)\]\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-content:"";--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--spacing:.25rem;--container-3xl:48rem;--container-6xl:72rem;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer base,components;@layer utilities{.\[container-type\:inline-size\]{container-type:inline-size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-x-0{inset-inline:var(--spacing-0)}.start-4{inset-inline-start:var(--spacing-4)}.-end-0\.5{inset-inline-end:calc(var(--spacing) * -.5)}.-top-0\.5{top:calc(var(--spacing) * -.5)}.-top-3{top:calc(var(--spacing-3) * -1)}.top-0{top:var(--spacing-0)}.top-8{top:var(--spacing-8)}.top-\[var\(--app-header-height\,64px\)\]{top:var(--app-header-height,64px)}.bottom-4{bottom:var(--spacing-4)}.left-1\/2{left:50%}.z-10{z-index:10}.z-\[1\]{z-index:1}.row-span-2{grid-row:span 2/span 2}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:var(--spacing-0)}.mx-auto{margin-inline:auto}.-ms-2{margin-inline-start:calc(var(--spacing-2) * -1)}.ms-1{margin-inline-start:var(--spacing-1)}.ms-auto{margin-inline-start:auto}.me-1{margin-inline-end:var(--spacing-1)}.me-2{margin-inline-end:var(--spacing-2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing-1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:var(--spacing-2)}.mt-auto{margin-top:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:var(--spacing-2)}.h-4{height:var(--spacing-4)}.h-8{height:var(--spacing-8)}.h-9{height:var(--spacing-9)}.h-10{height:var(--spacing-10)}.h-20{height:var(--spacing-20)}.h-\[calc\(100vh-var\(--app-header-height\,64px\)\)\]{height:calc(100vh - var(--app-header-height,64px))}.h-\[var\(--app-header-height\,64px\)\]{height:var(--app-header-height,64px)}.h-dvh{height:100dvh}.h-full{height:100%}.max-h-\[min\(28rem\,70vh\)\]{max-height:min(28rem,70vh)}.min-h-0{min-height:var(--spacing-0)}.min-h-\[56px\]{min-height:56px}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:var(--spacing-2)}.w-8{width:var(--spacing-8)}.w-10{width:var(--spacing-10)}.w-20{width:var(--spacing-20)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-full{width:100%}.w-px{width:1px;width:var(--spacing-px)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[6rem\]{max-width:6rem}.max-w-\[400px\]{max-width:400px}.max-w-\[480px\]{max-width:480px}.max-w-\[calc\(100vw-1rem\)\]{max-width:calc(100vw - 1rem)}.max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.max-w-xl{max-width:36rem}.min-w-0{min-width:var(--spacing-0)}.min-w-4{min-width:var(--spacing-4)}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.list-none{list-style-type:none}.grid-flow-row-dense{grid-auto-flow:dense}.auto-rows-\[minmax\(10rem\,auto\)\]{grid-auto-rows:minmax(10rem,auto)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:var(--spacing-0)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing-1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:var(--spacing-2)}.gap-3{gap:var(--spacing-3)}.gap-4{gap:var(--spacing-4)}.gap-5{gap:var(--spacing-5)}.gap-6{gap:var(--spacing-6)}.gap-8{gap:var(--spacing-8)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-\[var\(--color-outline-variant\)\]>:not(:last-child)){border-color:var(--color-outline-variant)}.self-center{align-self:center}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-\[8px\]{border-radius:8px}.rounded-\[12px\]{border-radius:12px}.rounded-full{border-radius:var(--radius-full)}.rounded-shape-container{border-radius:var(--shape-container)}.rounded-shape-control{border-radius:var(--shape-control)}.rounded-shape-field{border-radius:var(--shape-field)}.rounded-shape-min{border-radius:var(--shape-min)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-s-4{border-inline-start-style:var(--tw-border-style);border-inline-start-width:4px}.border-e-0{border-inline-end-style:var(--tw-border-style);border-inline-end-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-\[color-mix\(in_srgb\,var\(--color-outline-variant\)_60\%\,transparent\)\]{border-color:var(--color-outline-variant)}@supports (color:color-mix(in lab, red, red)){.border-\[color-mix\(in_srgb\,var\(--color-outline-variant\)_60\%\,transparent\)\]{border-color:color-mix(in srgb,var(--color-outline-variant) 60%,transparent)}}.border-\[var\(--color-outline-variant\)\]{border-color:var(--color-outline-variant)}.border-\[var\(--color-primary\)\]{border-color:var(--color-primary)}.border-s-\[var\(--color-error\)\]{border-inline-start-color:var(--color-error)}.bg-\[var\(--color-error\)\]{background-color:var(--color-error)}.bg-\[var\(--color-error-container\)\]{background-color:var(--color-error-container)}.bg-\[var\(--color-outline-variant\)\]{background-color:var(--color-outline-variant)}.bg-\[var\(--color-primary\)\]{background-color:var(--color-primary)}.bg-\[var\(--color-success-container\)\]{background-color:var(--color-success-container)}.bg-\[var\(--color-surface\)\]{background-color:var(--color-surface)}.bg-\[var\(--color-surface-container-low\)\]{background-color:var(--color-surface-container-low)}.bg-\[var\(--color-surface-elevated\)\]{background-color:var(--color-surface-elevated)}.bg-current{background-color:currentColor}.\[mask-image\:linear-gradient\(to_bottom\,black_calc\(100\%-24px\)\,transparent\)\]{-webkit-mask-image:linear-gradient(#000 calc(100% - 24px),#0000);mask-image:linear-gradient(#000 calc(100% - 24px),#0000)}.object-cover{object-fit:cover}.p-0{padding:var(--spacing-0)}.p-1{padding:var(--spacing-1)}.p-2{padding:var(--spacing-2)}.p-3{padding:var(--spacing-3)}.p-4{padding:var(--spacing-4)}.p-6{padding:var(--spacing-6)}.px-0{padding-inline:var(--spacing-0)}.px-1{padding-inline:var(--spacing-1)}.px-2{padding-inline:var(--spacing-2)}.px-3{padding-inline:var(--spacing-3)}.px-4{padding-inline:var(--spacing-4)}.px-5{padding-inline:var(--spacing-5)}.py-1{padding-block:var(--spacing-1)}.py-2{padding-block:var(--spacing-2)}.py-3{padding-block:var(--spacing-3)}.py-4{padding-block:var(--spacing-4)}.py-6{padding-block:var(--spacing-6)}.py-8{padding-block:var(--spacing-8)}.py-10{padding-block:var(--spacing-10)}.py-16{padding-block:var(--spacing-16)}.ps-3{padding-inline-start:var(--spacing-3)}.pe-2{padding-inline-end:var(--spacing-2)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-4{padding-top:var(--spacing-4)}.pt-5{padding-top:var(--spacing-5)}.pt-6{padding-top:var(--spacing-6)}.pb-2{padding-bottom:var(--spacing-2)}.pb-4{padding-bottom:var(--spacing-4)}.pb-6{padding-bottom:var(--spacing-6)}.pb-8{padding-bottom:var(--spacing-8)}.text-center{text-align:center}.text-end{text-align:end}.text-start{text-align:start}.text-body-md{font-size:var(--type-body-md-size);line-height:var(--tw-leading,var(--type-body-md-lineHeight));letter-spacing:var(--tw-tracking,var(--type-body-md-letterSpacing));font-weight:var(--tw-font-weight,var(--type-body-md-weight))}.text-body-sm{font-size:var(--type-body-sm-size);line-height:var(--tw-leading,var(--type-body-sm-lineHeight));letter-spacing:var(--tw-tracking,var(--type-body-sm-letterSpacing));font-weight:var(--tw-font-weight,var(--type-body-sm-weight))}.text-headline-sm{font-size:var(--type-headline-sm-size);line-height:var(--tw-leading,var(--type-headline-sm-lineHeight));letter-spacing:var(--tw-tracking,var(--type-headline-sm-letterSpacing));font-weight:var(--tw-font-weight,var(--type-headline-sm-weight))}.text-label-lg{font-size:var(--type-label-lg-size);line-height:var(--tw-leading,var(--type-label-lg-lineHeight));letter-spacing:var(--tw-tracking,var(--type-label-lg-letterSpacing));font-weight:var(--tw-font-weight,var(--type-label-lg-weight))}.text-label-md{font-size:var(--type-label-md-size);line-height:var(--tw-leading,var(--type-label-md-lineHeight));letter-spacing:var(--tw-tracking,var(--type-label-md-letterSpacing));font-weight:var(--tw-font-weight,var(--type-label-md-weight))}.text-label-sm{font-size:var(--type-label-sm-size);line-height:var(--tw-leading,var(--type-label-sm-lineHeight));letter-spacing:var(--tw-tracking,var(--type-label-sm-letterSpacing));font-weight:var(--tw-font-weight,var(--type-label-sm-weight))}.text-title-lg{font-size:var(--type-title-lg-size);line-height:var(--tw-leading,var(--type-title-lg-lineHeight));letter-spacing:var(--tw-tracking,var(--type-title-lg-letterSpacing));font-weight:var(--tw-font-weight,var(--type-title-lg-weight))}.text-title-md{font-size:var(--type-title-md-size);line-height:var(--tw-leading,var(--type-title-md-lineHeight));letter-spacing:var(--tw-tracking,var(--type-title-md-letterSpacing));font-weight:var(--tw-font-weight,var(--type-title-md-weight))}.text-title-sm{font-size:var(--type-title-sm-size);line-height:var(--tw-leading,var(--type-title-sm-lineHeight));letter-spacing:var(--tw-tracking,var(--type-title-sm-letterSpacing));font-weight:var(--tw-font-weight,var(--type-title-sm-weight))}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,2rem)}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,2.25rem)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,1.5rem)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,1.25rem)}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,1rem)}.text-\[10px\]{font-size:10px}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.break-words{overflow-wrap:break-word}.text-\[var\(--color-error\)\]{color:var(--color-error)}.text-\[var\(--color-on-error\)\]{color:var(--color-on-error)}.text-\[var\(--color-on-error-container\)\]{color:var(--color-on-error-container)}.text-\[var\(--color-on-primary\)\]{color:var(--color-on-primary)}.text-\[var\(--color-on-surface\)\]{color:var(--color-on-surface)}.text-\[var\(--color-on-surface-muted\)\]{color:var(--color-on-surface-muted)}.text-\[var\(--color-on-surface-variant\)\]{color:var(--color-on-surface-variant)}.text-\[var\(--color-primary\)\]{color:var(--color-primary)}.text-\[var\(--color-success\)\]{color:var(--color-success)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.underline-offset-\[0\.2em\]{text-underline-offset:.2em}.shadow-elevation-1{--tw-shadow:var(--elevation-1);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-elevation-2{--tw-shadow:var(--elevation-2);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.\[-webkit-mask-image\:linear-gradient\(to_bottom\,black_calc\(100\%-24px\)\,transparent\)\]{-webkit-mask-image:linear-gradient(#000 calc(100% - 24px),#0000)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:inset-0:after{content:var(--tw-content);inset:var(--spacing-0)}.after\:rounded-shape-container:after{content:var(--tw-content);border-radius:var(--shape-container)}.first\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}.last\:pb-0:last-child{padding-bottom:var(--spacing-0)}@media (hover:hover){.hover\:bg-\[color-mix\(in_srgb\,var\(--color-on-surface\)_8\%\,transparent\)\]:hover{background-color:var(--color-on-surface)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[color-mix\(in_srgb\,var\(--color-on-surface\)_8\%\,transparent\)\]:hover{background-color:color-mix(in srgb,var(--color-on-surface) 8%,transparent)}}.hover\:text-\[var\(--color-on-surface\)\]:hover{color:var(--color-on-surface)}}.focus-visible\:after\:outline:focus-visible:after{content:var(--tw-content);outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:after\:outline-2:focus-visible:after{content:var(--tw-content);outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:after\:outline-\[var\(--color-primary\)\]:focus-visible:after{content:var(--tw-content);outline-color:var(--color-primary)}@media (min-width:40rem){.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:w-1\/3{width:33.3333%}.sm\:w-64{width:var(--spacing-64)}.sm\:max-w-\[8rem\]{max-width:8rem}.sm\:shrink{flex-shrink:1}.sm\:shrink-0{flex-shrink:0}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-center{justify-content:center}.sm\:gap-1{gap:var(--spacing-1)}.sm\:gap-2{gap:var(--spacing-2)}.sm\:gap-4{gap:var(--spacing-4)}.sm\:px-4{padding-inline:var(--spacing-4)}.sm\:px-6{padding-inline:var(--spacing-6)}}@media (min-width:48rem){.md\:ms-0{margin-inline-start:var(--spacing-0)}.md\:flex{display:flex}.md\:hidden{display:none}.md\:w-1\/3{width:33.3333%}.md\:min-w-0{min-width:var(--spacing-0)}.md\:flex-1{flex:1}.md\:flex-row{flex-direction:row}.md\:justify-center{justify-content:center}.md\:gap-8{gap:var(--spacing-8)}.md\:px-2{padding-inline:var(--spacing-2)}.md\:px-8{padding-inline:var(--spacing-8)}.md\:py-10{padding-block:var(--spacing-10)}}@media (min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:px-4{padding-inline:var(--spacing-4)}.lg\:py-10{padding-block:var(--spacing-10)}}@media (min-width:80rem){.xl\:max-w-\[12rem\]{max-width:12rem}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.rtl\:-scale-x-100:where(:dir(rtl),[dir=rtl],[dir=rtl] *){--tw-scale-x:calc(100% * -1);scale:var(--tw-scale-x) var(--tw-scale-y)}@container (min-width:480px){.\[\@container\(min-width\:480px\)\]\:col-span-2{grid-column:span 2/span 2}.\[\@container\(min-width\:480px\)\]\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@container (min-width:720px){.\[\@container\(min-width\:720px\)\]\:flex{display:flex}.\[\@container\(min-width\:720px\)\]\:hidden{display:none}.\[\@container\(min-width\:720px\)\]\:w-72{width:calc(var(--spacing) * 72)}.\[\@container\(min-width\:720px\)\]\:w-80{width:calc(var(--spacing) * 80)}.\[\@container\(min-width\:720px\)\]\:w-\[400px\]{width:400px}.\[\@container\(min-width\:720px\)\]\:border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.\[\@container\(min-width\:720px\)\]\:border-\[var\(--color-outline-variant\)\]{border-color:var(--color-outline-variant)}}@container (min-width:768px){.\[\@container\(min-width\:768px\)\]\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nexub/patterns",
3
- "version": "6.5.0",
3
+ "version": "6.6.0",
4
4
  "description": "Composite UI patterns for Nexub Design System — pre-built, production-ready layouts and widgets built on @nexub/react.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -39,9 +39,9 @@
39
39
  "peerDependencies": {
40
40
  "react": ">=19 <20",
41
41
  "react-dom": ">=19 <20",
42
- "@nexub/icons": "^6.5.0",
43
- "@nexub/react": "^6.5.0",
44
- "@nexub/tokens": "^6.5.0"
42
+ "@nexub/icons": "^6.6.0",
43
+ "@nexub/react": "^6.6.0",
44
+ "@nexub/tokens": "^6.6.0"
45
45
  },
46
46
  "peerDependenciesMeta": {
47
47
  "@nexub/icons": {
@@ -64,9 +64,9 @@
64
64
  "typescript": "~6.0.3",
65
65
  "vite": "^8.3.5",
66
66
  "vitest": "^5.0.5",
67
- "@nexub/icons": "6.5.0",
68
- "@nexub/react": "6.5.0",
69
- "@nexub/tokens": "6.5.0"
67
+ "@nexub/icons": "6.6.0",
68
+ "@nexub/react": "6.6.0",
69
+ "@nexub/tokens": "6.6.0"
70
70
  },
71
71
  "scripts": {
72
72
  "build": "tsup && tailwindcss -i src/styles.css -o dist/styles.css --minify",