@tomny-dev/uzi 0.2.12 → 0.3.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 (109) hide show
  1. package/README.md +9 -0
  2. package/dist/components/application-scaffolding.test.d.ts +2 -0
  3. package/dist/components/application-scaffolding.test.d.ts.map +1 -0
  4. package/dist/components/empty-state/EmptyState.d.ts +14 -0
  5. package/dist/components/empty-state/EmptyState.d.ts.map +1 -0
  6. package/dist/components/layout-primitives/LayoutPrimitives.d.ts +16 -0
  7. package/dist/components/layout-primitives/LayoutPrimitives.d.ts.map +1 -0
  8. package/dist/components/page-container/PageContainer.d.ts +10 -0
  9. package/dist/components/page-container/PageContainer.d.ts.map +1 -0
  10. package/dist/components/page-header/PageHeader.d.ts +11 -0
  11. package/dist/components/page-header/PageHeader.d.ts.map +1 -0
  12. package/dist/components/section-header/SectionHeader.d.ts +10 -0
  13. package/dist/components/section-header/SectionHeader.d.ts.map +1 -0
  14. package/dist/components/stat/Stat.d.ts +12 -0
  15. package/dist/components/stat/Stat.d.ts.map +1 -0
  16. package/dist/index.cjs +19 -5
  17. package/dist/index.d.ts +12 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +12 -6
  20. package/dist/index41.js +12 -10
  21. package/dist/index41.js.map +1 -1
  22. package/dist/index42.cjs +14 -11
  23. package/dist/index42.cjs.map +1 -1
  24. package/dist/index42.js +14 -13
  25. package/dist/index42.js.map +1 -1
  26. package/dist/index43.cjs +14 -13
  27. package/dist/index43.cjs.map +1 -1
  28. package/dist/index43.js +15 -11
  29. package/dist/index43.js.map +1 -1
  30. package/dist/index44.cjs +21 -13
  31. package/dist/index44.cjs.map +1 -1
  32. package/dist/index44.js +28 -17
  33. package/dist/index44.js.map +1 -1
  34. package/dist/index45.cjs +27 -16
  35. package/dist/index45.cjs.map +1 -1
  36. package/dist/index45.js +13 -9
  37. package/dist/index45.js.map +1 -1
  38. package/dist/index46.cjs +18 -12
  39. package/dist/index46.cjs.map +1 -1
  40. package/dist/index46.js +22 -90
  41. package/dist/index46.js.map +1 -1
  42. package/dist/index47.cjs +21 -91
  43. package/dist/index47.cjs.map +1 -1
  44. package/dist/index47.js +17 -21
  45. package/dist/index47.js.map +1 -1
  46. package/dist/index48.cjs +24 -30
  47. package/dist/index48.cjs.map +1 -1
  48. package/dist/index48.js +30 -45
  49. package/dist/index48.js.map +1 -1
  50. package/dist/index49.cjs +29 -46
  51. package/dist/index49.cjs.map +1 -1
  52. package/dist/index49.js +14 -57
  53. package/dist/index49.js.map +1 -1
  54. package/dist/index50.cjs +17 -84
  55. package/dist/index50.cjs.map +1 -1
  56. package/dist/index50.js +24 -428
  57. package/dist/index50.js.map +1 -1
  58. package/dist/index51.cjs +24 -431
  59. package/dist/index51.cjs.map +1 -1
  60. package/dist/index51.js +21 -0
  61. package/dist/index51.js.map +1 -0
  62. package/dist/index52.cjs +26 -0
  63. package/dist/index52.cjs.map +1 -0
  64. package/dist/index52.js +35 -0
  65. package/dist/index52.js.map +1 -0
  66. package/dist/index53.cjs +36 -0
  67. package/dist/index53.cjs.map +1 -0
  68. package/dist/index53.js +14 -0
  69. package/dist/index53.js.map +1 -0
  70. package/dist/index54.cjs +15 -0
  71. package/dist/index54.cjs.map +1 -0
  72. package/dist/index54.js +21 -0
  73. package/dist/index54.js.map +1 -0
  74. package/dist/index55.cjs +21 -0
  75. package/dist/index55.cjs.map +1 -0
  76. package/dist/index55.js +15 -0
  77. package/dist/index55.js.map +1 -0
  78. package/dist/index56.cjs +17 -0
  79. package/dist/index56.cjs.map +1 -0
  80. package/dist/index56.js +24 -0
  81. package/dist/index56.js.map +1 -0
  82. package/dist/index57.cjs +24 -0
  83. package/dist/index57.cjs.map +1 -0
  84. package/dist/index57.js +13 -0
  85. package/dist/index57.js.map +1 -0
  86. package/dist/index58.cjs +16 -0
  87. package/dist/index58.cjs.map +1 -0
  88. package/dist/index58.js +96 -0
  89. package/dist/index58.js.map +1 -0
  90. package/dist/index59.cjs +98 -0
  91. package/dist/index59.cjs.map +1 -0
  92. package/dist/index59.js +25 -0
  93. package/dist/index59.js.map +1 -0
  94. package/dist/index60.cjs +34 -0
  95. package/dist/index60.cjs.map +1 -0
  96. package/dist/index60.js +50 -0
  97. package/dist/index60.js.map +1 -0
  98. package/dist/index61.cjs +52 -0
  99. package/dist/index61.cjs.map +1 -0
  100. package/dist/index61.js +61 -0
  101. package/dist/index61.js.map +1 -0
  102. package/dist/index62.cjs +88 -0
  103. package/dist/index62.cjs.map +1 -0
  104. package/dist/index62.js +439 -0
  105. package/dist/index62.js.map +1 -0
  106. package/dist/index63.cjs +443 -0
  107. package/dist/index63.cjs.map +1 -0
  108. package/dist/style.css +237 -0
  109. package/package.json +1 -1
package/README.md CHANGED
@@ -114,6 +114,12 @@ In practice, `uzi` should spend its complexity budget on reusable app scaffoldin
114
114
  | `AppShell` | Responsive layout with collapsible sidebar |
115
115
  | `SidebarNav` | Sidebar navigation list |
116
116
  | `TopBar` | Composable header shell for brand, nav triggers, and actions |
117
+ | `PageContainer` | Centered responsive page-width container with configurable max width |
118
+ | `PageHeader` | Page title, eyebrow, description, and action composition |
119
+ | `SectionHeader` | Reusable section title, description, and actions |
120
+ | `EmptyState` | Empty-result/resource state with visual and action slots |
121
+ | `Stack` / `Inline` | Small gap/alignment layout helpers for common composition |
122
+ | `Stat` / `StatGroup` | Domain-agnostic summary value and responsive stat grouping |
117
123
  | `ThemeToggleButton` | Reusable light/dark toggle wired to `ThemeProvider` |
118
124
  | `ThemeProvider` / `useTheme` | Light/dark + accent palette theming |
119
125
  | `ToastProvider` / `useToast` | Radix-backed toast notification system |
@@ -130,6 +136,7 @@ In practice, `uzi` should spend its complexity budget on reusable app scaffoldin
130
136
  - [Getting Started](docs/getting-started.md) — Installation, setup, and first component
131
137
  - [Theming](docs/theming.md) — ThemeProvider, useTheme, accent palettes, CSS overrides
132
138
  - [Layout Patterns](docs/guides/layout-patterns.md) — Dashboard, full-width header, center-branded
139
+ - [Application Scaffolding](docs/guides/application-scaffolding.md) — Page containers, headers, empty states, stats, and layout composition
133
140
  - [Form Patterns](docs/guides/form-patterns.md) — Input, Select, MultiSelect, SegmentedToggle patterns
134
141
 
135
142
  ## SSR Notes
@@ -152,6 +159,8 @@ The main `@tomny-dev/uzi` entry is a client entry because it exports interactive
152
159
  and React context providers. Next.js Server Components can import and render these exports;
153
160
  Next.js will preserve the client boundary without requiring a local wrapper.
154
161
 
162
+ The application-scaffolding components themselves do not use hooks or browser-only APIs, but they remain exposed through the main client entry in this release. A separate server-safe layout entry can be considered later if consumer measurements justify the added package surface.
163
+
155
164
  Use `@tomny-dev/uzi/server` for the server-safe `getThemeScript` export.
156
165
  Use `@tomny-dev/uzi/utils` for environment-neutral utilities such as `cx`, including
157
166
  calls made directly from Server Components.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=application-scaffolding.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application-scaffolding.test.d.ts","sourceRoot":"","sources":["../../src/components/application-scaffolding.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ export type EmptyStateSize = "compact" | "default";
3
+ export type EmptyStateHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
4
+ export type EmptyStateProps = Omit<HTMLAttributes<HTMLDivElement>, "title"> & {
5
+ title: ReactNode;
6
+ description?: ReactNode;
7
+ visual?: ReactNode;
8
+ primaryAction?: ReactNode;
9
+ secondaryAction?: ReactNode;
10
+ size?: EmptyStateSize;
11
+ headingLevel?: EmptyStateHeadingLevel;
12
+ };
13
+ export declare function EmptyState({ title, description, visual, primaryAction, secondaryAction, size, headingLevel, className, ...rest }: EmptyStateProps): import("react/jsx-runtime").JSX.Element;
14
+ //# sourceMappingURL=EmptyState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmptyState.d.ts","sourceRoot":"","sources":["../../../src/components/empty-state/EmptyState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvD,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,CAAC;AACnD,MAAM,MAAM,sBAAsB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE3D,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,GAAG;IAC5E,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,YAAY,CAAC,EAAE,sBAAsB,CAAC;CACvC,CAAC;AAEF,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,WAAW,EACX,MAAM,EACN,aAAa,EACb,eAAe,EACf,IAAgB,EAChB,YAAgB,EAChB,SAAS,EACT,GAAG,IAAI,EACR,EAAE,eAAe,2CAqBjB"}
@@ -0,0 +1,16 @@
1
+ import type { HTMLAttributes } from "react";
2
+ export type LayoutGap = "xs" | "sm" | "md" | "lg" | "xl";
3
+ export type InlineAlign = "start" | "center" | "end" | "baseline";
4
+ export type InlineJustify = "start" | "center" | "end" | "between";
5
+ export type StackProps = HTMLAttributes<HTMLDivElement> & {
6
+ gap?: LayoutGap;
7
+ };
8
+ export declare function Stack({ gap, className, children, ...rest }: StackProps): import("react/jsx-runtime").JSX.Element;
9
+ export type InlineProps = HTMLAttributes<HTMLDivElement> & {
10
+ gap?: LayoutGap;
11
+ align?: InlineAlign;
12
+ justify?: InlineJustify;
13
+ wrap?: boolean;
14
+ };
15
+ export declare function Inline({ gap, align, justify, wrap, className, children, style, ...rest }: InlineProps): import("react/jsx-runtime").JSX.Element;
16
+ //# sourceMappingURL=LayoutPrimitives.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LayoutPrimitives.d.ts","sourceRoot":"","sources":["../../../src/components/layout-primitives/LayoutPrimitives.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,OAAO,CAAC;AAI3D,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACzD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU,CAAC;AAClE,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAUnE,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG;IACxD,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB,CAAC;AAEF,wBAAgB,KAAK,CAAC,EAAE,GAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,UAAU,2CAM7E;AAED,MAAM,MAAM,WAAW,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG;IACzD,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,wBAAgB,MAAM,CAAC,EACrB,GAAU,EACV,KAAgB,EAChB,OAAiB,EACjB,IAAW,EACX,SAAS,EACT,QAAQ,EACR,KAAK,EACL,GAAG,IAAI,EACR,EAAE,WAAW,2CAiBb"}
@@ -0,0 +1,10 @@
1
+ import type { HTMLAttributes } from "react";
2
+ export type PageContainerWidth = "sm" | "md" | "lg" | "xl" | "full";
3
+ export type PageContainerProps = HTMLAttributes<HTMLDivElement> & {
4
+ /** Maximum content width. Defaults to `lg`. */
5
+ maxWidth?: PageContainerWidth;
6
+ /** Removes the responsive horizontal gutters. */
7
+ bleed?: boolean;
8
+ };
9
+ export declare function PageContainer({ maxWidth, bleed, className, children, ...rest }: PageContainerProps): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=PageContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageContainer.d.ts","sourceRoot":"","sources":["../../../src/components/page-container/PageContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAI5C,MAAM,MAAM,kBAAkB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAEpE,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG;IAChE,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,iDAAiD;IACjD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAUF,wBAAgB,aAAa,CAAC,EAC5B,QAAe,EACf,KAAa,EACb,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,kBAAkB,2CASpB"}
@@ -0,0 +1,11 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ export type PageHeaderHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
3
+ export type PageHeaderProps = Omit<HTMLAttributes<HTMLElement>, "title"> & {
4
+ title: ReactNode;
5
+ description?: ReactNode;
6
+ eyebrow?: ReactNode;
7
+ actions?: ReactNode;
8
+ headingLevel?: PageHeaderHeadingLevel;
9
+ };
10
+ export declare function PageHeader({ title, description, eyebrow, actions, headingLevel, className, ...rest }: PageHeaderProps): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=PageHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageHeader.d.ts","sourceRoot":"","sources":["../../../src/components/page-header/PageHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvD,MAAM,MAAM,sBAAsB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE3D,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,GAAG;IACzE,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,sBAAsB,CAAC;CACvC,CAAC;AAEF,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,WAAW,EACX,OAAO,EACP,OAAO,EACP,YAAgB,EAChB,SAAS,EACT,GAAG,IAAI,EACR,EAAE,eAAe,2CAajB"}
@@ -0,0 +1,10 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ export type SectionHeaderHeadingLevel = 2 | 3 | 4 | 5 | 6;
3
+ export type SectionHeaderProps = Omit<HTMLAttributes<HTMLDivElement>, "title"> & {
4
+ title: ReactNode;
5
+ description?: ReactNode;
6
+ actions?: ReactNode;
7
+ headingLevel?: SectionHeaderHeadingLevel;
8
+ };
9
+ export declare function SectionHeader({ title, description, actions, headingLevel, className, ...rest }: SectionHeaderProps): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=SectionHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SectionHeader.d.ts","sourceRoot":"","sources":["../../../src/components/section-header/SectionHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvD,MAAM,MAAM,yBAAyB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE1D,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,GAAG;IAC/E,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,yBAAyB,CAAC;CAC1C,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,WAAW,EACX,OAAO,EACP,YAAgB,EAChB,SAAS,EACT,GAAG,IAAI,EACR,EAAE,kBAAkB,2CAYpB"}
@@ -0,0 +1,12 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ export type StatProps = HTMLAttributes<HTMLDivElement> & {
3
+ label: ReactNode;
4
+ value: ReactNode;
5
+ detail?: ReactNode;
6
+ };
7
+ export declare function Stat({ label, value, detail, className, ...rest }: StatProps): import("react/jsx-runtime").JSX.Element;
8
+ export type StatGroupProps = HTMLAttributes<HTMLDivElement> & {
9
+ columns?: 1 | 2 | 3 | 4;
10
+ };
11
+ export declare function StatGroup({ columns, className, children, ...rest }: StatGroupProps): import("react/jsx-runtime").JSX.Element;
12
+ //# sourceMappingURL=Stat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Stat.d.ts","sourceRoot":"","sources":["../../../src/components/stat/Stat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvD,MAAM,MAAM,SAAS,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG;IACvD,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB,CAAC;AAEF,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,2CAQ3E;AAED,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG;IAC5D,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACzB,CAAC;AAEF,wBAAgB,SAAS,CAAC,EAAE,OAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,2CAStF"}
package/dist/index.cjs CHANGED
@@ -21,11 +21,17 @@ const require_ThemeToggleButton = require("./index35.cjs");
21
21
  const require_TopBar = require("./index37.cjs");
22
22
  const require_AppShell = require("./index39.cjs");
23
23
  const require_SidebarNav = require("./index41.cjs");
24
- const require_Skeleton = require("./index43.cjs");
25
- const require_Progress = require("./index45.cjs");
26
- const require_SegmentedToggle = require("./index47.cjs");
27
- const require_AuthCard = require("./index49.cjs");
28
- const require_AuthPages = require("./index51.cjs");
24
+ const require_PageContainer = require("./index43.cjs");
25
+ const require_PageHeader = require("./index45.cjs");
26
+ const require_SectionHeader = require("./index47.cjs");
27
+ const require_EmptyState = require("./index49.cjs");
28
+ const require_LayoutPrimitives = require("./index51.cjs");
29
+ const require_Stat = require("./index53.cjs");
30
+ const require_Skeleton = require("./index55.cjs");
31
+ const require_Progress = require("./index57.cjs");
32
+ const require_SegmentedToggle = require("./index59.cjs");
33
+ const require_AuthCard = require("./index61.cjs");
34
+ const require_AuthPages = require("./index63.cjs");
29
35
  exports.Alert = require_Alert.Alert;
30
36
  exports.AppShell = require_AppShell.AppShell;
31
37
  exports.AuthCard = require_AuthCard.AuthCard;
@@ -50,20 +56,28 @@ exports.DropdownMenuSub = require_DropdownMenu.DropdownMenuSub;
50
56
  exports.DropdownMenuSubContent = require_DropdownMenu.DropdownMenuSubContent;
51
57
  exports.DropdownMenuSubTrigger = require_DropdownMenu.DropdownMenuSubTrigger;
52
58
  exports.DropdownMenuTrigger = require_DropdownMenu.DropdownMenuTrigger;
59
+ exports.EmptyState = require_EmptyState.EmptyState;
53
60
  exports.ForgotPasswordPage = require_AuthPages.ForgotPasswordPage;
61
+ exports.Inline = require_LayoutPrimitives.Inline;
54
62
  exports.Input = require_Input.Input;
55
63
  exports.Label = require_Label.Label;
56
64
  exports.Modal = require_Modal.Modal;
57
65
  exports.ModalOverlay = require_Modal.ModalOverlay;
58
66
  exports.MultiSelect = require_MultiSelect.MultiSelect;
67
+ exports.PageContainer = require_PageContainer.PageContainer;
68
+ exports.PageHeader = require_PageHeader.PageHeader;
59
69
  exports.Pill = require_Pill.Pill;
60
70
  exports.Progress = require_Progress.Progress;
71
+ exports.SectionHeader = require_SectionHeader.SectionHeader;
61
72
  exports.SegmentedToggle = require_SegmentedToggle.SegmentedToggle;
62
73
  exports.Select = require_Select.Select;
63
74
  exports.SidebarNav = require_SidebarNav.SidebarNav;
64
75
  exports.SignInPage = require_AuthPages.SignInPage;
65
76
  exports.SignUpPage = require_AuthPages.SignUpPage;
66
77
  exports.Skeleton = require_Skeleton.Skeleton;
78
+ exports.Stack = require_LayoutPrimitives.Stack;
79
+ exports.Stat = require_Stat.Stat;
80
+ exports.StatGroup = require_Stat.StatGroup;
67
81
  exports.ThemeProvider = require_ThemeProvider.ThemeProvider;
68
82
  exports.ThemeToggleButton = require_ThemeToggleButton.ThemeToggleButton;
69
83
  exports.ToastProvider = require_ToastContext.ToastProvider;
package/dist/index.d.ts CHANGED
@@ -30,6 +30,18 @@ export type { SidebarNavItem, SidebarNavProps, SidebarNavSection } from "./compo
30
30
  export { SidebarNav } from "./components/sidebar-nav/SidebarNav";
31
31
  export type { TopBarProps } from "./components/top-bar/TopBar";
32
32
  export { TopBar } from "./components/top-bar/TopBar";
33
+ export type { PageContainerProps, PageContainerWidth } from "./components/page-container/PageContainer";
34
+ export { PageContainer } from "./components/page-container/PageContainer";
35
+ export type { PageHeaderHeadingLevel, PageHeaderProps } from "./components/page-header/PageHeader";
36
+ export { PageHeader } from "./components/page-header/PageHeader";
37
+ export type { SectionHeaderHeadingLevel, SectionHeaderProps } from "./components/section-header/SectionHeader";
38
+ export { SectionHeader } from "./components/section-header/SectionHeader";
39
+ export type { EmptyStateHeadingLevel, EmptyStateProps, EmptyStateSize, } from "./components/empty-state/EmptyState";
40
+ export { EmptyState } from "./components/empty-state/EmptyState";
41
+ export type { InlineAlign, InlineJustify, InlineProps, LayoutGap, StackProps, } from "./components/layout-primitives/LayoutPrimitives";
42
+ export { Inline, Stack } from "./components/layout-primitives/LayoutPrimitives";
43
+ export type { StatGroupProps, StatProps } from "./components/stat/Stat";
44
+ export { Stat, StatGroup } from "./components/stat/Stat";
33
45
  export type { ThemeToggleButtonProps } from "./components/theme-toggle-button/ThemeToggleButton";
34
46
  export { ThemeToggleButton } from "./components/theme-toggle-button/ThemeToggleButton";
35
47
  export type { UziAccent, UziResolvedTheme, UziTheme } from "./theme/ThemeProvider";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -20,9 +20,15 @@ import { ThemeToggleButton } from "./index34.js";
20
20
  import { TopBar } from "./index36.js";
21
21
  import { AppShell } from "./index38.js";
22
22
  import { SidebarNav } from "./index40.js";
23
- import { Skeleton } from "./index42.js";
24
- import { Progress } from "./index44.js";
25
- import { SegmentedToggle } from "./index46.js";
26
- import { AuthCard } from "./index48.js";
27
- import { ForgotPasswordPage, SignInPage, SignUpPage } from "./index50.js";
28
- export { Alert, AppShell, AuthCard, Avatar, AvatarFallback, AvatarImage, Button, Card, Checkbox, Dropdown, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ForgotPasswordPage, Input, Label, Modal, ModalOverlay, MultiSelect, Pill, Progress, SegmentedToggle, Select, SidebarNav, SignInPage, SignUpPage, Skeleton, ThemeProvider, ThemeToggleButton, ToastProvider, TopBar, cx, useTheme, useToast };
23
+ import { PageContainer } from "./index42.js";
24
+ import { PageHeader } from "./index44.js";
25
+ import { SectionHeader } from "./index46.js";
26
+ import { EmptyState } from "./index48.js";
27
+ import { Inline, Stack } from "./index50.js";
28
+ import { Stat, StatGroup } from "./index52.js";
29
+ import { Skeleton } from "./index54.js";
30
+ import { Progress } from "./index56.js";
31
+ import { SegmentedToggle } from "./index58.js";
32
+ import { AuthCard } from "./index60.js";
33
+ import { ForgotPasswordPage, SignInPage, SignUpPage } from "./index62.js";
34
+ export { Alert, AppShell, AuthCard, Avatar, AvatarFallback, AvatarImage, Button, Card, Checkbox, Dropdown, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, ForgotPasswordPage, Inline, Input, Label, Modal, ModalOverlay, MultiSelect, PageContainer, PageHeader, Pill, Progress, SectionHeader, SegmentedToggle, Select, SidebarNav, SignInPage, SignUpPage, Skeleton, Stack, Stat, StatGroup, ThemeProvider, ThemeToggleButton, ToastProvider, TopBar, cx, useTheme, useToast };
package/dist/index41.js CHANGED
@@ -1,14 +1,16 @@
1
- //#region src/components/skeleton/skeleton.module.css
2
- var skeleton = "uzi-skeleton-module__skeleton__fula5";
3
- var skeleton_module_default = {
4
- skeleton,
5
- "skeleton-pulse": "uzi-skeleton-module__skeleton-pulse__Yp45W",
6
- "radius-sm": "uzi-skeleton-module__radius-sm__FdccD",
7
- "radius-md": "uzi-skeleton-module__radius-md__zH3RE",
8
- "radius-lg": "uzi-skeleton-module__radius-lg__YVrHw",
9
- "radius-full": "uzi-skeleton-module__radius-full__5o2m0"
1
+ //#region src/components/page-container/page-container.module.css
2
+ var container = "uzi-page-container-module__container__o7e1A";
3
+ var bleed = "uzi-page-container-module__bleed__8rKR8";
4
+ var page_container_module_default = {
5
+ container,
6
+ "width-sm": "uzi-page-container-module__width-sm__8Mpln",
7
+ "width-md": "uzi-page-container-module__width-md__KSmd5",
8
+ "width-lg": "uzi-page-container-module__width-lg__GpJ-B",
9
+ "width-xl": "uzi-page-container-module__width-xl__S2q8u",
10
+ "width-full": "uzi-page-container-module__width-full__eHJdY",
11
+ bleed
10
12
  };
11
13
  //#endregion
12
- export { skeleton_module_default as default, skeleton };
14
+ export { bleed, container, page_container_module_default as default };
13
15
 
14
16
  //# sourceMappingURL=index41.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index41.js","names":[],"sources":["../src/components/skeleton/skeleton.module.css"],"sourcesContent":[".skeleton {\n background: color-mix(in srgb, var(--muted-foreground) 14%, var(--background));\n animation: skeleton-pulse 1.6s ease-in-out infinite;\n}\n\n@keyframes skeleton-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.45; }\n}\n\n.radius-sm { border-radius: 4px; }\n.radius-md { border-radius: 8px; }\n.radius-lg { border-radius: 12px; }\n.radius-full { border-radius: 9999px; }\n"],"mappings":""}
1
+ {"version":3,"file":"index41.js","names":[],"sources":["../src/components/page-container/page-container.module.css"],"sourcesContent":[".container {\n width: 100%;\n margin-inline: auto;\n padding-inline: var(--uzi-page-gutter, clamp(1rem, 3vw, 2rem));\n}\n\n.width-sm { max-width: 48rem; }\n.width-md { max-width: 64rem; }\n.width-lg { max-width: 75rem; }\n.width-xl { max-width: 90rem; }\n.width-full { max-width: none; }\n\n.bleed {\n padding-inline: 0;\n}\n"],"mappings":""}
package/dist/index42.cjs CHANGED
@@ -1,15 +1,18 @@
1
- //#region src/components/skeleton/skeleton.module.css
2
- var skeleton = "uzi-skeleton-module__skeleton__fula5";
3
- var skeleton_module_default = {
4
- skeleton,
5
- "skeleton-pulse": "uzi-skeleton-module__skeleton-pulse__Yp45W",
6
- "radius-sm": "uzi-skeleton-module__radius-sm__FdccD",
7
- "radius-md": "uzi-skeleton-module__radius-md__zH3RE",
8
- "radius-lg": "uzi-skeleton-module__radius-lg__YVrHw",
9
- "radius-full": "uzi-skeleton-module__radius-full__5o2m0"
1
+ //#region src/components/page-container/page-container.module.css
2
+ var container = "uzi-page-container-module__container__o7e1A";
3
+ var bleed = "uzi-page-container-module__bleed__8rKR8";
4
+ var page_container_module_default = {
5
+ container,
6
+ "width-sm": "uzi-page-container-module__width-sm__8Mpln",
7
+ "width-md": "uzi-page-container-module__width-md__KSmd5",
8
+ "width-lg": "uzi-page-container-module__width-lg__GpJ-B",
9
+ "width-xl": "uzi-page-container-module__width-xl__S2q8u",
10
+ "width-full": "uzi-page-container-module__width-full__eHJdY",
11
+ bleed
10
12
  };
11
13
  //#endregion
12
- exports.default = skeleton_module_default;
13
- exports.skeleton = skeleton;
14
+ exports.bleed = bleed;
15
+ exports.container = container;
16
+ exports.default = page_container_module_default;
14
17
 
15
18
  //# sourceMappingURL=index42.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index42.cjs","names":[],"sources":["../src/components/skeleton/skeleton.module.css"],"sourcesContent":[".skeleton {\n background: color-mix(in srgb, var(--muted-foreground) 14%, var(--background));\n animation: skeleton-pulse 1.6s ease-in-out infinite;\n}\n\n@keyframes skeleton-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.45; }\n}\n\n.radius-sm { border-radius: 4px; }\n.radius-md { border-radius: 8px; }\n.radius-lg { border-radius: 12px; }\n.radius-full { border-radius: 9999px; }\n"],"mappings":""}
1
+ {"version":3,"file":"index42.cjs","names":[],"sources":["../src/components/page-container/page-container.module.css"],"sourcesContent":[".container {\n width: 100%;\n margin-inline: auto;\n padding-inline: var(--uzi-page-gutter, clamp(1rem, 3vw, 2rem));\n}\n\n.width-sm { max-width: 48rem; }\n.width-md { max-width: 64rem; }\n.width-lg { max-width: 75rem; }\n.width-xl { max-width: 90rem; }\n.width-full { max-width: none; }\n\n.bleed {\n padding-inline: 0;\n}\n"],"mappings":""}
package/dist/index42.js CHANGED
@@ -1,21 +1,22 @@
1
- "use client";
2
1
  import { cx } from "./index3.js";
3
- import skeleton_module_default from "./index41.js";
2
+ import page_container_module_default from "./index41.js";
4
3
  import { jsx } from "react/jsx-runtime";
5
- //#region src/components/skeleton/Skeleton.tsx
6
- function Skeleton({ width, height, radius = "md", className, style, ...rest }) {
4
+ //#region src/components/page-container/PageContainer.tsx
5
+ var WIDTH_CLASS = {
6
+ sm: "width-sm",
7
+ md: "width-md",
8
+ lg: "width-lg",
9
+ xl: "width-xl",
10
+ full: "width-full"
11
+ };
12
+ function PageContainer({ maxWidth = "lg", bleed = false, className, children, ...rest }) {
7
13
  return /* @__PURE__ */ jsx("div", {
8
- className: cx(skeleton_module_default.skeleton, skeleton_module_default[`radius-${radius}`], className),
9
- style: {
10
- width,
11
- height,
12
- ...style
13
- },
14
- "aria-hidden": "true",
15
- ...rest
14
+ className: cx(page_container_module_default.container, page_container_module_default[WIDTH_CLASS[maxWidth]], bleed && page_container_module_default.bleed, className),
15
+ ...rest,
16
+ children
16
17
  });
17
18
  }
18
19
  //#endregion
19
- export { Skeleton };
20
+ export { PageContainer };
20
21
 
21
22
  //# sourceMappingURL=index42.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index42.js","names":[],"sources":["../src/components/skeleton/Skeleton.tsx"],"sourcesContent":["\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./skeleton.module.css\";\n\nexport type SkeletonProps = HTMLAttributes<HTMLDivElement> & {\n /** Width as a CSS value. */\n width?: string;\n /** Height as a CSS value. */\n height?: string;\n /** Border radius preset. Defaults to \"md\". */\n radius?: \"sm\" | \"md\" | \"lg\" | \"full\";\n};\n\nexport function Skeleton({\n width,\n height,\n radius = \"md\",\n className,\n style,\n ...rest\n}: SkeletonProps) {\n return (\n <div\n className={cx(styles.skeleton, styles[`radius-${radius}`], className)}\n style={{ width, height, ...style }}\n aria-hidden=\"true\"\n {...rest}\n />\n );\n}\n"],"mappings":";;;;;AAeA,SAAgB,SAAS,EACvB,OACA,QACA,SAAS,MACT,WACA,OACA,GAAG,QACa;CAChB,OACE,oBAAC,OAAD;EACE,WAAW,GAAG,wBAAO,UAAU,wBAAO,UAAU,WAAW,SAAS;EACpE,OAAO;GAAE;GAAO;GAAQ,GAAG;EAAM;EACjC,eAAY;EACZ,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"index42.js","names":[],"sources":["../src/components/page-container/PageContainer.tsx"],"sourcesContent":["import type { HTMLAttributes } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./page-container.module.css\";\n\nexport type PageContainerWidth = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport type PageContainerProps = HTMLAttributes<HTMLDivElement> & {\n /** Maximum content width. Defaults to `lg`. */\n maxWidth?: PageContainerWidth;\n /** Removes the responsive horizontal gutters. */\n bleed?: boolean;\n};\n\nconst WIDTH_CLASS: Record<PageContainerWidth, string> = {\n sm: \"width-sm\",\n md: \"width-md\",\n lg: \"width-lg\",\n xl: \"width-xl\",\n full: \"width-full\",\n};\n\nexport function PageContainer({\n maxWidth = \"lg\",\n bleed = false,\n className,\n children,\n ...rest\n}: PageContainerProps) {\n return (\n <div\n className={cx(styles.container, styles[WIDTH_CLASS[maxWidth]], bleed && styles.bleed, className)}\n {...rest}\n >\n {children}\n </div>\n );\n}\n"],"mappings":";;;;AAaA,IAAM,cAAkD;CACtD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM;AACR;AAEA,SAAgB,cAAc,EAC5B,WAAW,MACX,QAAQ,OACR,WACA,UACA,GAAG,QACkB;CACrB,OACE,oBAAC,OAAD;EACE,WAAW,GAAG,8BAAO,WAAW,8BAAO,YAAY,YAAY,SAAS,8BAAO,OAAO,SAAS;EAC/F,GAAI;EAEH;CACE,CAAA;AAET"}
package/dist/index43.cjs CHANGED
@@ -1,21 +1,22 @@
1
- "use client";
2
1
  const require_cx = require("./index4.cjs");
3
- const require_skeleton_module = require("./index42.cjs");
2
+ const require_page_container_module = require("./index42.cjs");
4
3
  let react_jsx_runtime = require("react/jsx-runtime");
5
- //#region src/components/skeleton/Skeleton.tsx
6
- function Skeleton({ width, height, radius = "md", className, style, ...rest }) {
4
+ //#region src/components/page-container/PageContainer.tsx
5
+ var WIDTH_CLASS = {
6
+ sm: "width-sm",
7
+ md: "width-md",
8
+ lg: "width-lg",
9
+ xl: "width-xl",
10
+ full: "width-full"
11
+ };
12
+ function PageContainer({ maxWidth = "lg", bleed = false, className, children, ...rest }) {
7
13
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
8
- className: require_cx.cx(require_skeleton_module.default.skeleton, require_skeleton_module.default[`radius-${radius}`], className),
9
- style: {
10
- width,
11
- height,
12
- ...style
13
- },
14
- "aria-hidden": "true",
15
- ...rest
14
+ className: require_cx.cx(require_page_container_module.default.container, require_page_container_module.default[WIDTH_CLASS[maxWidth]], bleed && require_page_container_module.default.bleed, className),
15
+ ...rest,
16
+ children
16
17
  });
17
18
  }
18
19
  //#endregion
19
- exports.Skeleton = Skeleton;
20
+ exports.PageContainer = PageContainer;
20
21
 
21
22
  //# sourceMappingURL=index43.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index43.cjs","names":[],"sources":["../src/components/skeleton/Skeleton.tsx"],"sourcesContent":["\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./skeleton.module.css\";\n\nexport type SkeletonProps = HTMLAttributes<HTMLDivElement> & {\n /** Width as a CSS value. */\n width?: string;\n /** Height as a CSS value. */\n height?: string;\n /** Border radius preset. Defaults to \"md\". */\n radius?: \"sm\" | \"md\" | \"lg\" | \"full\";\n};\n\nexport function Skeleton({\n width,\n height,\n radius = \"md\",\n className,\n style,\n ...rest\n}: SkeletonProps) {\n return (\n <div\n className={cx(styles.skeleton, styles[`radius-${radius}`], className)}\n style={{ width, height, ...style }}\n aria-hidden=\"true\"\n {...rest}\n />\n );\n}\n"],"mappings":";;;;;AAeA,SAAgB,SAAS,EACvB,OACA,QACA,SAAS,MACT,WACA,OACA,GAAG,QACa;CAChB,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EACE,WAAW,WAAA,GAAG,wBAAA,QAAO,UAAU,wBAAA,QAAO,UAAU,WAAW,SAAS;EACpE,OAAO;GAAE;GAAO;GAAQ,GAAG;EAAM;EACjC,eAAY;EACZ,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"index43.cjs","names":[],"sources":["../src/components/page-container/PageContainer.tsx"],"sourcesContent":["import type { HTMLAttributes } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./page-container.module.css\";\n\nexport type PageContainerWidth = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport type PageContainerProps = HTMLAttributes<HTMLDivElement> & {\n /** Maximum content width. Defaults to `lg`. */\n maxWidth?: PageContainerWidth;\n /** Removes the responsive horizontal gutters. */\n bleed?: boolean;\n};\n\nconst WIDTH_CLASS: Record<PageContainerWidth, string> = {\n sm: \"width-sm\",\n md: \"width-md\",\n lg: \"width-lg\",\n xl: \"width-xl\",\n full: \"width-full\",\n};\n\nexport function PageContainer({\n maxWidth = \"lg\",\n bleed = false,\n className,\n children,\n ...rest\n}: PageContainerProps) {\n return (\n <div\n className={cx(styles.container, styles[WIDTH_CLASS[maxWidth]], bleed && styles.bleed, className)}\n {...rest}\n >\n {children}\n </div>\n );\n}\n"],"mappings":";;;;AAaA,IAAM,cAAkD;CACtD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM;AACR;AAEA,SAAgB,cAAc,EAC5B,WAAW,MACX,QAAQ,OACR,WACA,UACA,GAAG,QACkB;CACrB,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EACE,WAAW,WAAA,GAAG,8BAAA,QAAO,WAAW,8BAAA,QAAO,YAAY,YAAY,SAAS,8BAAA,QAAO,OAAO,SAAS;EAC/F,GAAI;EAEH;CACE,CAAA;AAET"}
package/dist/index43.js CHANGED
@@ -1,15 +1,19 @@
1
- //#region src/components/progress/progress.module.css
2
- var track = "uzi-progress-module__track__gM0oV";
3
- var fill = "uzi-progress-module__fill__aLAbp";
4
- var progress_module_default = {
5
- track,
6
- fill,
7
- "tone-default": "uzi-progress-module__tone-default__fhf7o",
8
- "tone-success": "uzi-progress-module__tone-success__FsGHD",
9
- "tone-warning": "uzi-progress-module__tone-warning__UAttL",
10
- "tone-danger": "uzi-progress-module__tone-danger__-L-Ee"
1
+ //#region src/components/page-header/page-header.module.css
2
+ var header = "uzi-page-header-module__header__LpR9k";
3
+ var content = "uzi-page-header-module__content__lJh9C";
4
+ var eyebrow = "uzi-page-header-module__eyebrow__xP-Qr";
5
+ var title = "uzi-page-header-module__title__kkZon";
6
+ var description = "uzi-page-header-module__description__zNQ1m";
7
+ var actions = "uzi-page-header-module__actions__6KfL2";
8
+ var page_header_module_default = {
9
+ header,
10
+ content,
11
+ eyebrow,
12
+ title,
13
+ description,
14
+ actions
11
15
  };
12
16
  //#endregion
13
- export { progress_module_default as default, fill, track };
17
+ export { actions, content, page_header_module_default as default, description, eyebrow, header, title };
14
18
 
15
19
  //# sourceMappingURL=index43.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index43.js","names":[],"sources":["../src/components/progress/progress.module.css"],"sourcesContent":[".track {\n height: 8px;\n border-radius: 9999px;\n overflow: hidden;\n background: color-mix(in srgb, var(--border) 60%, transparent);\n}\n\n.fill {\n height: 100%;\n border-radius: 9999px;\n transition: width 0.4s ease;\n}\n\n.tone-default { background: var(--foreground); }\n.tone-success { background: var(--success); }\n.tone-warning { background: var(--warning); }\n.tone-danger { background: var(--destructive); }\n"],"mappings":""}
1
+ {"version":3,"file":"index43.js","names":[],"sources":["../src/components/page-header/page-header.module.css"],"sourcesContent":[".header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 1.5rem;\n}\n\n.content {\n min-width: 0;\n display: grid;\n gap: 0.5rem;\n}\n\n.eyebrow {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.5rem;\n color: var(--muted-foreground);\n font-size: 0.8125rem;\n font-weight: 600;\n}\n\n.title {\n margin: 0;\n color: var(--foreground);\n font-size: clamp(1.75rem, 3vw, 2.5rem);\n line-height: 1.12;\n letter-spacing: -0.025em;\n}\n\n.description {\n max-width: 48rem;\n color: var(--muted-foreground);\n font-size: 0.95rem;\n line-height: 1.65;\n}\n\n.actions {\n display: flex;\n flex: 0 0 auto;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n gap: 0.625rem;\n}\n\n@media (max-width: 40rem) {\n .header {\n flex-direction: column;\n }\n\n .actions {\n width: 100%;\n justify-content: flex-start;\n }\n}\n"],"mappings":""}
package/dist/index44.cjs CHANGED
@@ -1,17 +1,25 @@
1
- //#region src/components/progress/progress.module.css
2
- var track = "uzi-progress-module__track__gM0oV";
3
- var fill = "uzi-progress-module__fill__aLAbp";
4
- var progress_module_default = {
5
- track,
6
- fill,
7
- "tone-default": "uzi-progress-module__tone-default__fhf7o",
8
- "tone-success": "uzi-progress-module__tone-success__FsGHD",
9
- "tone-warning": "uzi-progress-module__tone-warning__UAttL",
10
- "tone-danger": "uzi-progress-module__tone-danger__-L-Ee"
1
+ //#region src/components/page-header/page-header.module.css
2
+ var header = "uzi-page-header-module__header__LpR9k";
3
+ var content = "uzi-page-header-module__content__lJh9C";
4
+ var eyebrow = "uzi-page-header-module__eyebrow__xP-Qr";
5
+ var title = "uzi-page-header-module__title__kkZon";
6
+ var description = "uzi-page-header-module__description__zNQ1m";
7
+ var actions = "uzi-page-header-module__actions__6KfL2";
8
+ var page_header_module_default = {
9
+ header,
10
+ content,
11
+ eyebrow,
12
+ title,
13
+ description,
14
+ actions
11
15
  };
12
16
  //#endregion
13
- exports.default = progress_module_default;
14
- exports.fill = fill;
15
- exports.track = track;
17
+ exports.actions = actions;
18
+ exports.content = content;
19
+ exports.default = page_header_module_default;
20
+ exports.description = description;
21
+ exports.eyebrow = eyebrow;
22
+ exports.header = header;
23
+ exports.title = title;
16
24
 
17
25
  //# sourceMappingURL=index44.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index44.cjs","names":[],"sources":["../src/components/progress/progress.module.css"],"sourcesContent":[".track {\n height: 8px;\n border-radius: 9999px;\n overflow: hidden;\n background: color-mix(in srgb, var(--border) 60%, transparent);\n}\n\n.fill {\n height: 100%;\n border-radius: 9999px;\n transition: width 0.4s ease;\n}\n\n.tone-default { background: var(--foreground); }\n.tone-success { background: var(--success); }\n.tone-warning { background: var(--warning); }\n.tone-danger { background: var(--destructive); }\n"],"mappings":""}
1
+ {"version":3,"file":"index44.cjs","names":[],"sources":["../src/components/page-header/page-header.module.css"],"sourcesContent":[".header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 1.5rem;\n}\n\n.content {\n min-width: 0;\n display: grid;\n gap: 0.5rem;\n}\n\n.eyebrow {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.5rem;\n color: var(--muted-foreground);\n font-size: 0.8125rem;\n font-weight: 600;\n}\n\n.title {\n margin: 0;\n color: var(--foreground);\n font-size: clamp(1.75rem, 3vw, 2.5rem);\n line-height: 1.12;\n letter-spacing: -0.025em;\n}\n\n.description {\n max-width: 48rem;\n color: var(--muted-foreground);\n font-size: 0.95rem;\n line-height: 1.65;\n}\n\n.actions {\n display: flex;\n flex: 0 0 auto;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n gap: 0.625rem;\n}\n\n@media (max-width: 40rem) {\n .header {\n flex-direction: column;\n }\n\n .actions {\n width: 100%;\n justify-content: flex-start;\n }\n}\n"],"mappings":""}
package/dist/index44.js CHANGED
@@ -1,24 +1,35 @@
1
1
  import { cx } from "./index3.js";
2
- import progress_module_default from "./index43.js";
3
- import { jsx } from "react/jsx-runtime";
4
- //#region src/components/progress/Progress.tsx
5
- function Progress({ value, tone = "default", className, "aria-label": ariaLabel, ...rest }) {
6
- const clamped = Math.max(0, Math.min(100, value));
7
- return /* @__PURE__ */ jsx("div", {
8
- className: cx(progress_module_default.track, className),
9
- role: "progressbar",
10
- "aria-valuenow": clamped,
11
- "aria-valuemin": 0,
12
- "aria-valuemax": 100,
13
- "aria-label": ariaLabel,
2
+ import page_header_module_default from "./index43.js";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ //#region src/components/page-header/PageHeader.tsx
5
+ function PageHeader({ title, description, eyebrow, actions, headingLevel = 1, className, ...rest }) {
6
+ const Heading = `h${headingLevel}`;
7
+ return /* @__PURE__ */ jsxs("header", {
8
+ className: cx(page_header_module_default.header, className),
14
9
  ...rest,
15
- children: /* @__PURE__ */ jsx("div", {
16
- className: cx(progress_module_default.fill, progress_module_default[`tone-${tone}`]),
17
- style: { width: `${clamped}%` }
18
- })
10
+ children: [/* @__PURE__ */ jsxs("div", {
11
+ className: page_header_module_default.content,
12
+ children: [
13
+ eyebrow != null && /* @__PURE__ */ jsx("div", {
14
+ className: page_header_module_default.eyebrow,
15
+ children: eyebrow
16
+ }),
17
+ /* @__PURE__ */ jsx(Heading, {
18
+ className: page_header_module_default.title,
19
+ children: title
20
+ }),
21
+ description != null && /* @__PURE__ */ jsx("div", {
22
+ className: page_header_module_default.description,
23
+ children: description
24
+ })
25
+ ]
26
+ }), actions != null && /* @__PURE__ */ jsx("div", {
27
+ className: page_header_module_default.actions,
28
+ children: actions
29
+ })]
19
30
  });
20
31
  }
21
32
  //#endregion
22
- export { Progress };
33
+ export { PageHeader };
23
34
 
24
35
  //# sourceMappingURL=index44.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index44.js","names":[],"sources":["../src/components/progress/Progress.tsx"],"sourcesContent":["import type { HTMLAttributes } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./progress.module.css\";\n\nexport type ProgressTone = \"default\" | \"success\" | \"warning\" | \"danger\";\n\nexport type ProgressProps = HTMLAttributes<HTMLDivElement> & {\n /** Value 0–100. */\n value: number;\n /** Visual tone. Defaults to \"default\". */\n tone?: ProgressTone;\n /** Accessible label. */\n \"aria-label\"?: string;\n};\n\nexport function Progress({\n value,\n tone = \"default\",\n className,\n \"aria-label\": ariaLabel,\n ...rest\n}: ProgressProps) {\n const clamped = Math.max(0, Math.min(100, value));\n return (\n <div\n className={cx(styles.track, className)}\n role=\"progressbar\"\n aria-valuenow={clamped}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={ariaLabel}\n {...rest}\n >\n <div\n className={cx(styles.fill, styles[`tone-${tone}`])}\n style={{ width: `${clamped}%` }}\n />\n </div>\n );\n}\n"],"mappings":";;;;AAeA,SAAgB,SAAS,EACvB,OACA,OAAO,WACP,WACA,cAAc,WACd,GAAG,QACa;CAChB,MAAM,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC;CAChD,OACE,oBAAC,OAAD;EACE,WAAW,GAAG,wBAAO,OAAO,SAAS;EACrC,MAAK;EACL,iBAAe;EACf,iBAAe;EACf,iBAAe;EACf,cAAY;EACZ,GAAI;YAEJ,oBAAC,OAAD;GACE,WAAW,GAAG,wBAAO,MAAM,wBAAO,QAAQ,OAAO;GACjD,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG;EAC/B,CAAA;CACE,CAAA;AAET"}
1
+ {"version":3,"file":"index44.js","names":[],"sources":["../src/components/page-header/PageHeader.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./page-header.module.css\";\n\nexport type PageHeaderHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport type PageHeaderProps = Omit<HTMLAttributes<HTMLElement>, \"title\"> & {\n title: ReactNode;\n description?: ReactNode;\n eyebrow?: ReactNode;\n actions?: ReactNode;\n headingLevel?: PageHeaderHeadingLevel;\n};\n\nexport function PageHeader({\n title,\n description,\n eyebrow,\n actions,\n headingLevel = 1,\n className,\n ...rest\n}: PageHeaderProps) {\n const Heading = `h${headingLevel}` as `h${PageHeaderHeadingLevel}`;\n\n return (\n <header className={cx(styles.header, className)} {...rest}>\n <div className={styles.content}>\n {eyebrow != null && <div className={styles.eyebrow}>{eyebrow}</div>}\n <Heading className={styles.title}>{title}</Heading>\n {description != null && <div className={styles.description}>{description}</div>}\n </div>\n {actions != null && <div className={styles.actions}>{actions}</div>}\n </header>\n );\n}\n"],"mappings":";;;;AAcA,SAAgB,WAAW,EACzB,OACA,aACA,SACA,SACA,eAAe,GACf,WACA,GAAG,QACe;CAClB,MAAM,UAAU,IAAI;CAEpB,OACE,qBAAC,UAAD;EAAQ,WAAW,GAAG,2BAAO,QAAQ,SAAS;EAAG,GAAI;YAArD,CACE,qBAAC,OAAD;GAAK,WAAW,2BAAO;aAAvB;IACG,WAAW,QAAQ,oBAAC,OAAD;KAAK,WAAW,2BAAO;eAAU;IAAa,CAAA;IAClE,oBAAC,SAAD;KAAS,WAAW,2BAAO;eAAQ;IAAe,CAAA;IACjD,eAAe,QAAQ,oBAAC,OAAD;KAAK,WAAW,2BAAO;eAAc;IAAiB,CAAA;GAC3E;MACJ,WAAW,QAAQ,oBAAC,OAAD;GAAK,WAAW,2BAAO;aAAU;EAAa,CAAA,CAC5D;;AAEZ"}