@giddaa-housing/ui 0.1.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 (248) hide show
  1. package/README.md +41 -0
  2. package/dist/accordion.d.ts +11 -0
  3. package/dist/accordion.js +124 -0
  4. package/dist/accordion.js.map +1 -0
  5. package/dist/alert.d.ts +18 -0
  6. package/dist/alert.js +152 -0
  7. package/dist/alert.js.map +1 -0
  8. package/dist/avatar.d.ts +14 -0
  9. package/dist/avatar.js +152 -0
  10. package/dist/avatar.js.map +1 -0
  11. package/dist/badge.d.ts +14 -0
  12. package/dist/badge.js +119 -0
  13. package/dist/badge.js.map +1 -0
  14. package/dist/bar-chart.d.ts +136 -0
  15. package/dist/bar-chart.js +302 -0
  16. package/dist/bar-chart.js.map +1 -0
  17. package/dist/base.css +32 -0
  18. package/dist/breadcrumb.d.ts +12 -0
  19. package/dist/breadcrumb.js +161 -0
  20. package/dist/breadcrumb.js.map +1 -0
  21. package/dist/bullet-chart.d.ts +98 -0
  22. package/dist/bullet-chart.js +189 -0
  23. package/dist/bullet-chart.js.map +1 -0
  24. package/dist/button-group.d.ts +18 -0
  25. package/dist/button-group.js +170 -0
  26. package/dist/button-group.js.map +1 -0
  27. package/dist/button.d.ts +19 -0
  28. package/dist/button.js +146 -0
  29. package/dist/button.js.map +1 -0
  30. package/dist/calendar.d.ts +9 -0
  31. package/dist/calendar.js +293 -0
  32. package/dist/calendar.js.map +1 -0
  33. package/dist/card.d.ts +18 -0
  34. package/dist/card.js +186 -0
  35. package/dist/card.js.map +1 -0
  36. package/dist/carousel.d.ts +53 -0
  37. package/dist/carousel.js +396 -0
  38. package/dist/carousel.js.map +1 -0
  39. package/dist/chart.d.ts +122 -0
  40. package/dist/chart.js +494 -0
  41. package/dist/chart.js.map +1 -0
  42. package/dist/checkbox.d.ts +73 -0
  43. package/dist/checkbox.js +87 -0
  44. package/dist/checkbox.js.map +1 -0
  45. package/dist/collapsible.d.ts +8 -0
  46. package/dist/collapsible.js +82 -0
  47. package/dist/collapsible.js.map +1 -0
  48. package/dist/combobox.d.ts +30 -0
  49. package/dist/combobox.js +713 -0
  50. package/dist/combobox.js.map +1 -0
  51. package/dist/date-picker.d.ts +22 -0
  52. package/dist/date-picker.js +528 -0
  53. package/dist/date-picker.js.map +1 -0
  54. package/dist/dialog.d.ts +30 -0
  55. package/dist/dialog.js +339 -0
  56. package/dist/dialog.js.map +1 -0
  57. package/dist/dropdown-menu.d.ts +35 -0
  58. package/dist/dropdown-menu.js +376 -0
  59. package/dist/dropdown-menu.js.map +1 -0
  60. package/dist/dropzone.d.ts +128 -0
  61. package/dist/dropzone.js +490 -0
  62. package/dist/dropzone.js.map +1 -0
  63. package/dist/empty-state.d.ts +17 -0
  64. package/dist/empty-state.js +146 -0
  65. package/dist/empty-state.js.map +1 -0
  66. package/dist/field.d.ts +29 -0
  67. package/dist/field.js +345 -0
  68. package/dist/field.js.map +1 -0
  69. package/dist/files/red-hat-display-latin-300-italic.woff +0 -0
  70. package/dist/files/red-hat-display-latin-300-italic.woff2 +0 -0
  71. package/dist/files/red-hat-display-latin-300-normal.woff +0 -0
  72. package/dist/files/red-hat-display-latin-300-normal.woff2 +0 -0
  73. package/dist/files/red-hat-display-latin-400-italic.woff +0 -0
  74. package/dist/files/red-hat-display-latin-400-italic.woff2 +0 -0
  75. package/dist/files/red-hat-display-latin-400-normal.woff +0 -0
  76. package/dist/files/red-hat-display-latin-400-normal.woff2 +0 -0
  77. package/dist/files/red-hat-display-latin-500-italic.woff +0 -0
  78. package/dist/files/red-hat-display-latin-500-italic.woff2 +0 -0
  79. package/dist/files/red-hat-display-latin-500-normal.woff +0 -0
  80. package/dist/files/red-hat-display-latin-500-normal.woff2 +0 -0
  81. package/dist/files/red-hat-display-latin-600-italic.woff +0 -0
  82. package/dist/files/red-hat-display-latin-600-italic.woff2 +0 -0
  83. package/dist/files/red-hat-display-latin-600-normal.woff +0 -0
  84. package/dist/files/red-hat-display-latin-600-normal.woff2 +0 -0
  85. package/dist/files/red-hat-display-latin-700-italic.woff +0 -0
  86. package/dist/files/red-hat-display-latin-700-italic.woff2 +0 -0
  87. package/dist/files/red-hat-display-latin-700-normal.woff +0 -0
  88. package/dist/files/red-hat-display-latin-700-normal.woff2 +0 -0
  89. package/dist/files/red-hat-display-latin-800-italic.woff +0 -0
  90. package/dist/files/red-hat-display-latin-800-italic.woff2 +0 -0
  91. package/dist/files/red-hat-display-latin-800-normal.woff +0 -0
  92. package/dist/files/red-hat-display-latin-800-normal.woff2 +0 -0
  93. package/dist/files/red-hat-display-latin-900-italic.woff +0 -0
  94. package/dist/files/red-hat-display-latin-900-italic.woff2 +0 -0
  95. package/dist/files/red-hat-display-latin-900-normal.woff +0 -0
  96. package/dist/files/red-hat-display-latin-900-normal.woff2 +0 -0
  97. package/dist/files/red-hat-display-latin-ext-300-italic.woff +0 -0
  98. package/dist/files/red-hat-display-latin-ext-300-italic.woff2 +0 -0
  99. package/dist/files/red-hat-display-latin-ext-300-normal.woff +0 -0
  100. package/dist/files/red-hat-display-latin-ext-300-normal.woff2 +0 -0
  101. package/dist/files/red-hat-display-latin-ext-400-italic.woff +0 -0
  102. package/dist/files/red-hat-display-latin-ext-400-italic.woff2 +0 -0
  103. package/dist/files/red-hat-display-latin-ext-400-normal.woff +0 -0
  104. package/dist/files/red-hat-display-latin-ext-400-normal.woff2 +0 -0
  105. package/dist/files/red-hat-display-latin-ext-500-italic.woff +0 -0
  106. package/dist/files/red-hat-display-latin-ext-500-italic.woff2 +0 -0
  107. package/dist/files/red-hat-display-latin-ext-500-normal.woff +0 -0
  108. package/dist/files/red-hat-display-latin-ext-500-normal.woff2 +0 -0
  109. package/dist/files/red-hat-display-latin-ext-600-italic.woff +0 -0
  110. package/dist/files/red-hat-display-latin-ext-600-italic.woff2 +0 -0
  111. package/dist/files/red-hat-display-latin-ext-600-normal.woff +0 -0
  112. package/dist/files/red-hat-display-latin-ext-600-normal.woff2 +0 -0
  113. package/dist/files/red-hat-display-latin-ext-700-italic.woff +0 -0
  114. package/dist/files/red-hat-display-latin-ext-700-italic.woff2 +0 -0
  115. package/dist/files/red-hat-display-latin-ext-700-normal.woff +0 -0
  116. package/dist/files/red-hat-display-latin-ext-700-normal.woff2 +0 -0
  117. package/dist/files/red-hat-display-latin-ext-800-italic.woff +0 -0
  118. package/dist/files/red-hat-display-latin-ext-800-italic.woff2 +0 -0
  119. package/dist/files/red-hat-display-latin-ext-800-normal.woff +0 -0
  120. package/dist/files/red-hat-display-latin-ext-800-normal.woff2 +0 -0
  121. package/dist/files/red-hat-display-latin-ext-900-italic.woff +0 -0
  122. package/dist/files/red-hat-display-latin-ext-900-italic.woff2 +0 -0
  123. package/dist/files/red-hat-display-latin-ext-900-normal.woff +0 -0
  124. package/dist/files/red-hat-display-latin-ext-900-normal.woff2 +0 -0
  125. package/dist/funnel-chart.d.ts +84 -0
  126. package/dist/funnel-chart.js +569 -0
  127. package/dist/funnel-chart.js.map +1 -0
  128. package/dist/index.d.ts +87 -0
  129. package/dist/index.js +10448 -0
  130. package/dist/index.js.map +1 -0
  131. package/dist/input-group.d.ts +31 -0
  132. package/dist/input-group.js +380 -0
  133. package/dist/input-group.js.map +1 -0
  134. package/dist/input-size-context.d.ts +11 -0
  135. package/dist/input-size-context.js +24 -0
  136. package/dist/input-size-context.js.map +1 -0
  137. package/dist/input.d.ts +13 -0
  138. package/dist/input.js +83 -0
  139. package/dist/input.js.map +1 -0
  140. package/dist/item.d.ts +8 -0
  141. package/dist/item.js +93 -0
  142. package/dist/item.js.map +1 -0
  143. package/dist/kpi-card.d.ts +24 -0
  144. package/dist/kpi-card.js +243 -0
  145. package/dist/kpi-card.js.map +1 -0
  146. package/dist/label.d.ts +8 -0
  147. package/dist/label.js +68 -0
  148. package/dist/label.js.map +1 -0
  149. package/dist/line-chart.d.ts +155 -0
  150. package/dist/line-chart.js +269 -0
  151. package/dist/line-chart.js.map +1 -0
  152. package/dist/logo.d.ts +6 -0
  153. package/dist/logo.js +146 -0
  154. package/dist/logo.js.map +1 -0
  155. package/dist/number-input.d.ts +41 -0
  156. package/dist/number-input.js +418 -0
  157. package/dist/number-input.js.map +1 -0
  158. package/dist/page-header.d.ts +13 -0
  159. package/dist/page-header.js +113 -0
  160. package/dist/page-header.js.map +1 -0
  161. package/dist/pagination.d.ts +35 -0
  162. package/dist/pagination.js +352 -0
  163. package/dist/pagination.js.map +1 -0
  164. package/dist/password-input.d.ts +13 -0
  165. package/dist/password-input.js +356 -0
  166. package/dist/password-input.js.map +1 -0
  167. package/dist/phone-input.d.ts +21 -0
  168. package/dist/phone-input.js +573 -0
  169. package/dist/phone-input.js.map +1 -0
  170. package/dist/photo-gallery.d.ts +42 -0
  171. package/dist/photo-gallery.js +756 -0
  172. package/dist/photo-gallery.js.map +1 -0
  173. package/dist/pie-chart.d.ts +125 -0
  174. package/dist/pie-chart.js +192 -0
  175. package/dist/pie-chart.js.map +1 -0
  176. package/dist/popover.d.ts +20 -0
  177. package/dist/popover.js +169 -0
  178. package/dist/popover.js.map +1 -0
  179. package/dist/progress.d.ts +28 -0
  180. package/dist/progress.js +315 -0
  181. package/dist/progress.js.map +1 -0
  182. package/dist/radio-group.d.ts +32 -0
  183. package/dist/radio-group.js +100 -0
  184. package/dist/radio-group.js.map +1 -0
  185. package/dist/red-hat-display.css +2 -0
  186. package/dist/rich-text-editor.d.ts +16 -0
  187. package/dist/rich-text-editor.js +1000 -0
  188. package/dist/rich-text-editor.js.map +1 -0
  189. package/dist/search-input.d.ts +19 -0
  190. package/dist/search-input.js +411 -0
  191. package/dist/search-input.js.map +1 -0
  192. package/dist/select.d.ts +21 -0
  193. package/dist/select.js +305 -0
  194. package/dist/select.js.map +1 -0
  195. package/dist/separator.d.ts +10 -0
  196. package/dist/separator.js +72 -0
  197. package/dist/separator.js.map +1 -0
  198. package/dist/sheet.d.ts +24 -0
  199. package/dist/sheet.js +282 -0
  200. package/dist/sheet.js.map +1 -0
  201. package/dist/sidebar.d.ts +70 -0
  202. package/dist/sidebar.js +1078 -0
  203. package/dist/sidebar.js.map +1 -0
  204. package/dist/size-context.d.ts +11 -0
  205. package/dist/size-context.js +22 -0
  206. package/dist/size-context.js.map +1 -0
  207. package/dist/skeleton.d.ts +5 -0
  208. package/dist/skeleton.js +48 -0
  209. package/dist/skeleton.js.map +1 -0
  210. package/dist/sparkline.d.ts +94 -0
  211. package/dist/sparkline.js +568 -0
  212. package/dist/sparkline.js.map +1 -0
  213. package/dist/stepper.d.ts +43 -0
  214. package/dist/stepper.js +296 -0
  215. package/dist/stepper.js.map +1 -0
  216. package/dist/styles.css +2 -0
  217. package/dist/switch.d.ts +29 -0
  218. package/dist/switch.js +108 -0
  219. package/dist/switch.js.map +1 -0
  220. package/dist/tab-list.d.ts +38 -0
  221. package/dist/tab-list.js +394 -0
  222. package/dist/tab-list.js.map +1 -0
  223. package/dist/table.d.ts +69 -0
  224. package/dist/table.js +197 -0
  225. package/dist/table.js.map +1 -0
  226. package/dist/tabs.d.ts +18 -0
  227. package/dist/tabs.js +159 -0
  228. package/dist/tabs.js.map +1 -0
  229. package/dist/tag.d.ts +25 -0
  230. package/dist/tag.js +160 -0
  231. package/dist/tag.js.map +1 -0
  232. package/dist/textarea.d.ts +12 -0
  233. package/dist/textarea.js +78 -0
  234. package/dist/textarea.js.map +1 -0
  235. package/dist/theme/giddaa.css +2 -0
  236. package/dist/time-picker.d.ts +13 -0
  237. package/dist/time-picker.js +472 -0
  238. package/dist/time-picker.js.map +1 -0
  239. package/dist/toast.d.ts +23 -0
  240. package/dist/toast.js +330 -0
  241. package/dist/toast.js.map +1 -0
  242. package/dist/tooltip.d.ts +11 -0
  243. package/dist/tooltip.js +96 -0
  244. package/dist/tooltip.js.map +1 -0
  245. package/dist/tree-map.d.ts +127 -0
  246. package/dist/tree-map.js +652 -0
  247. package/dist/tree-map.js.map +1 -0
  248. package/package.json +328 -0
@@ -0,0 +1,43 @@
1
+ import * as class_variance_authority_types from 'class-variance-authority/types';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ import * as React from 'react';
4
+
5
+ type StepperOrientation = "horizontal" | "vertical";
6
+ type StepperState = "complete" | "active" | "upcoming";
7
+ type StepperProps = React.ComponentProps<"div"> & {
8
+ orientation?: StepperOrientation;
9
+ /** Active step number (1-based). Items without an explicit `state` derive theirs from this. */
10
+ value?: number;
11
+ };
12
+ declare function Stepper({ orientation, value, className, children, ...props }: StepperProps): React.JSX.Element;
13
+ type StepperItemProps = Omit<React.ComponentProps<"div">, "children"> & {
14
+ /** Force a specific state instead of deriving it from the stepper `value`. */
15
+ state?: StepperState;
16
+ /** 1-based position. Injected by `Stepper`; only set this to override. */
17
+ step?: number;
18
+ /** Whether this is the last item (hides its connector). Injected by `Stepper`. */
19
+ last?: boolean;
20
+ /** Custom indicator node. Defaults to a numbered circle / checkmark. */
21
+ indicator?: React.ReactNode;
22
+ children?: React.ReactNode;
23
+ };
24
+ declare function StepperItem({ state: stateOverride, step, last, indicator, className, children, ...props }: StepperItemProps): React.JSX.Element;
25
+ declare const indicatorVariants: (props?: ({
26
+ state?: "active" | "complete" | "upcoming" | null | undefined;
27
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
28
+ type StepperIndicatorProps = Omit<React.ComponentProps<"div">, "children"> & VariantProps<typeof indicatorVariants> & {
29
+ /** Override the rendered glyph. Defaults to the step number / checkmark. */
30
+ children?: React.ReactNode;
31
+ };
32
+ declare function StepperIndicator({ className, state: stateProp, children, ...props }: StepperIndicatorProps): React.JSX.Element;
33
+ declare function StepperSeparator({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
34
+ declare function StepperTitle({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
35
+ declare function StepperDescription({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
36
+ type StepperMetaProps = Omit<React.ComponentProps<"div">, "children"> & {
37
+ date?: React.ReactNode;
38
+ time?: React.ReactNode;
39
+ };
40
+ /** Date / timestamp caption pair. Placeholder colour regardless of state. */
41
+ declare function StepperMeta({ date, time, className, ...props }: StepperMetaProps): React.JSX.Element | null;
42
+
43
+ export { Stepper, StepperDescription, StepperIndicator, StepperItem, StepperMeta, type StepperOrientation, StepperSeparator, type StepperState, StepperTitle };
@@ -0,0 +1,296 @@
1
+ // src/components/ui/stepper.tsx
2
+ import { cva } from "class-variance-authority";
3
+ import { CheckIcon } from "lucide-react";
4
+ import * as React from "react";
5
+
6
+ // src/lib/cn.ts
7
+ import { clsx } from "clsx";
8
+ import { extendTailwindMerge } from "tailwind-merge";
9
+ var twMerge = extendTailwindMerge({
10
+ extend: {
11
+ classGroups: {
12
+ "font-size": [
13
+ {
14
+ text: [
15
+ "gdt-display",
16
+ "gdt-h1",
17
+ "gdt-h2",
18
+ "gdt-h3",
19
+ "gdt-h4",
20
+ "gdt-h5",
21
+ "gdt-xl",
22
+ "gdt-lg",
23
+ "gdt-md",
24
+ "gdt-sm",
25
+ "gdt-xs",
26
+ "gdt-subtext",
27
+ "gdt-capitalized"
28
+ ]
29
+ }
30
+ ]
31
+ }
32
+ }
33
+ });
34
+ function cn(...inputs) {
35
+ return twMerge(clsx(inputs));
36
+ }
37
+
38
+ // src/components/ui/stepper.tsx
39
+ import { jsx, jsxs } from "react/jsx-runtime";
40
+ var StepperContext = React.createContext(null);
41
+ function useStepper() {
42
+ const context = React.useContext(StepperContext);
43
+ if (!context) {
44
+ throw new Error("Stepper parts must be used within a <Stepper />");
45
+ }
46
+ return context;
47
+ }
48
+ var StepperItemContext = React.createContext(
49
+ null
50
+ );
51
+ function useStepperItem() {
52
+ const context = React.useContext(StepperItemContext);
53
+ if (!context) {
54
+ throw new Error("Stepper item parts must be used within a <StepperItem />");
55
+ }
56
+ return context;
57
+ }
58
+ function resolveState(step, value, override) {
59
+ if (override) return override;
60
+ if (value == null) return "upcoming";
61
+ if (step < value) return "complete";
62
+ if (step === value) return "active";
63
+ return "upcoming";
64
+ }
65
+ function Stepper({
66
+ orientation = "horizontal",
67
+ value,
68
+ className,
69
+ children,
70
+ ...props
71
+ }) {
72
+ const items = React.Children.toArray(children).filter(React.isValidElement);
73
+ const contextValue = React.useMemo(
74
+ () => ({ orientation, value }),
75
+ [orientation, value]
76
+ );
77
+ return /* @__PURE__ */ jsx(StepperContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
78
+ "div",
79
+ {
80
+ "data-slot": "stepper",
81
+ "data-orientation": orientation,
82
+ className: cn(
83
+ "flex",
84
+ orientation === "horizontal" ? "flex-row" : "flex-col",
85
+ className
86
+ ),
87
+ ...props,
88
+ children: items.map((child, index) => {
89
+ if (!React.isValidElement(child)) return child;
90
+ return React.cloneElement(child, {
91
+ step: child.props.step ?? index + 1,
92
+ last: child.props.last ?? index === items.length - 1
93
+ });
94
+ })
95
+ }
96
+ ) });
97
+ }
98
+ function StepperItem({
99
+ state: stateOverride,
100
+ step = 1,
101
+ last = false,
102
+ indicator,
103
+ className,
104
+ children,
105
+ ...props
106
+ }) {
107
+ const { orientation, value } = useStepper();
108
+ const state = resolveState(step, value, stateOverride);
109
+ const itemContext = React.useMemo(
110
+ () => ({ state, step }),
111
+ [state, step]
112
+ );
113
+ return /* @__PURE__ */ jsx(StepperItemContext.Provider, { value: itemContext, children: /* @__PURE__ */ jsxs(
114
+ "div",
115
+ {
116
+ "data-slot": "stepper-item",
117
+ "data-state": state,
118
+ "data-orientation": orientation,
119
+ className: cn(
120
+ "group/stepper-item flex min-w-0",
121
+ orientation === "horizontal" ? "flex-1 flex-col gap-3 last:flex-none" : "flex-row items-stretch gap-3",
122
+ className
123
+ ),
124
+ ...props,
125
+ children: [
126
+ /* @__PURE__ */ jsxs(
127
+ "div",
128
+ {
129
+ className: cn(
130
+ "flex",
131
+ orientation === "horizontal" ? "items-center" : "flex-col items-center"
132
+ ),
133
+ children: [
134
+ indicator ?? /* @__PURE__ */ jsx(StepperIndicator, {}),
135
+ !last && /* @__PURE__ */ jsx(StepperSeparator, {})
136
+ ]
137
+ }
138
+ ),
139
+ children != null && /* @__PURE__ */ jsx(
140
+ "div",
141
+ {
142
+ className: cn(
143
+ "flex min-w-0 flex-col gap-1",
144
+ orientation === "horizontal" ? "pr-4" : cn("pt-1", !last && "pb-8")
145
+ ),
146
+ children
147
+ }
148
+ )
149
+ ]
150
+ }
151
+ ) });
152
+ }
153
+ var indicatorVariants = cva(
154
+ "relative flex size-7 shrink-0 items-center justify-center rounded-full text-gdt-sm font-semibold transition-colors sm:size-9",
155
+ {
156
+ variants: {
157
+ state: {
158
+ complete: "border border-transparent bg-action-primary text-fg-on-brand",
159
+ active: "border-2 border-line-focus bg-canvas text-fg-brand",
160
+ upcoming: "border border-line bg-surface text-fg-secondary"
161
+ }
162
+ },
163
+ defaultVariants: {
164
+ state: "upcoming"
165
+ }
166
+ }
167
+ );
168
+ function StepperIndicator({
169
+ className,
170
+ state: stateProp,
171
+ children,
172
+ ...props
173
+ }) {
174
+ const { state, step } = useStepperItem();
175
+ const resolved = stateProp ?? state;
176
+ return /* @__PURE__ */ jsx(
177
+ "div",
178
+ {
179
+ "data-slot": "stepper-indicator",
180
+ "data-state": resolved,
181
+ className: cn(indicatorVariants({ state: resolved }), className),
182
+ ...props,
183
+ children: children ?? (resolved === "complete" ? /* @__PURE__ */ jsx(CheckIcon, { className: "size-4 sm:size-4.5", strokeWidth: 2.5 }) : step)
184
+ }
185
+ );
186
+ }
187
+ var separatorVariants = cva("shrink-0 rounded-full transition-colors", {
188
+ variants: {
189
+ state: {
190
+ complete: "bg-action-primary",
191
+ active: "bg-line",
192
+ upcoming: "bg-line"
193
+ },
194
+ orientation: {
195
+ horizontal: "h-0.5 flex-1",
196
+ vertical: "w-0.5 flex-1 min-h-8"
197
+ }
198
+ },
199
+ defaultVariants: {
200
+ state: "upcoming",
201
+ orientation: "horizontal"
202
+ }
203
+ });
204
+ function StepperSeparator({
205
+ className,
206
+ ...props
207
+ }) {
208
+ const { orientation } = useStepper();
209
+ const { state } = useStepperItem();
210
+ return /* @__PURE__ */ jsx(
211
+ "div",
212
+ {
213
+ "data-slot": "stepper-separator",
214
+ "aria-hidden": "true",
215
+ className: cn(separatorVariants({ state, orientation }), className),
216
+ ...props
217
+ }
218
+ );
219
+ }
220
+ var titleVariants = cva("text-gdt-sm font-bold", {
221
+ variants: {
222
+ state: {
223
+ complete: "text-fg-primary",
224
+ active: "text-fg-brand",
225
+ upcoming: "text-fg-secondary"
226
+ }
227
+ },
228
+ defaultVariants: {
229
+ state: "upcoming"
230
+ }
231
+ });
232
+ function StepperTitle({ className, ...props }) {
233
+ const { state } = useStepperItem();
234
+ return /* @__PURE__ */ jsx(
235
+ "p",
236
+ {
237
+ "data-slot": "stepper-title",
238
+ className: cn(titleVariants({ state }), className),
239
+ ...props
240
+ }
241
+ );
242
+ }
243
+ var descriptionVariants = cva("text-gdt-sm", {
244
+ variants: {
245
+ state: {
246
+ complete: "text-fg-secondary",
247
+ active: "text-fg-secondary",
248
+ upcoming: "text-fg-caption-placeholder"
249
+ }
250
+ },
251
+ defaultVariants: {
252
+ state: "upcoming"
253
+ }
254
+ });
255
+ function StepperDescription({
256
+ className,
257
+ ...props
258
+ }) {
259
+ const { state } = useStepperItem();
260
+ return /* @__PURE__ */ jsx(
261
+ "p",
262
+ {
263
+ "data-slot": "stepper-description",
264
+ className: cn(descriptionVariants({ state }), className),
265
+ ...props
266
+ }
267
+ );
268
+ }
269
+ function StepperMeta({ date, time, className, ...props }) {
270
+ if (date == null && time == null) return null;
271
+ return /* @__PURE__ */ jsxs(
272
+ "div",
273
+ {
274
+ "data-slot": "stepper-meta",
275
+ className: cn(
276
+ "flex flex-wrap items-center gap-x-2 gap-y-0.5 text-gdt-xs text-fg-caption-placeholder",
277
+ className
278
+ ),
279
+ ...props,
280
+ children: [
281
+ date != null && /* @__PURE__ */ jsx("span", { children: date }),
282
+ time != null && /* @__PURE__ */ jsx("span", { children: time })
283
+ ]
284
+ }
285
+ );
286
+ }
287
+ export {
288
+ Stepper,
289
+ StepperDescription,
290
+ StepperIndicator,
291
+ StepperItem,
292
+ StepperMeta,
293
+ StepperSeparator,
294
+ StepperTitle
295
+ };
296
+ //# sourceMappingURL=stepper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/stepper.tsx","../src/lib/cn.ts"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\nimport { CheckIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\n\ntype StepperOrientation = \"horizontal\" | \"vertical\";\ntype StepperState = \"complete\" | \"active\" | \"upcoming\";\n\ntype StepperContextValue = {\n\torientation: StepperOrientation;\n\t/** Active step number (1-based). Steps derive their state from this. */\n\tvalue?: number;\n};\n\nconst StepperContext = React.createContext<StepperContextValue | null>(null);\n\nfunction useStepper() {\n\tconst context = React.useContext(StepperContext);\n\n\tif (!context) {\n\t\tthrow new Error(\"Stepper parts must be used within a <Stepper />\");\n\t}\n\n\treturn context;\n}\n\ntype StepperItemContextValue = {\n\tstate: StepperState;\n\t/** 1-based position of this step in the stepper. */\n\tstep: number;\n};\n\nconst StepperItemContext = React.createContext<StepperItemContextValue | null>(\n\tnull,\n);\n\nfunction useStepperItem() {\n\tconst context = React.useContext(StepperItemContext);\n\n\tif (!context) {\n\t\tthrow new Error(\"Stepper item parts must be used within a <StepperItem />\");\n\t}\n\n\treturn context;\n}\n\nfunction resolveState(\n\tstep: number,\n\tvalue: number | undefined,\n\toverride: StepperState | undefined,\n): StepperState {\n\tif (override) return override;\n\tif (value == null) return \"upcoming\";\n\tif (step < value) return \"complete\";\n\tif (step === value) return \"active\";\n\treturn \"upcoming\";\n}\n\ntype StepperProps = React.ComponentProps<\"div\"> & {\n\torientation?: StepperOrientation;\n\t/** Active step number (1-based). Items without an explicit `state` derive theirs from this. */\n\tvalue?: number;\n};\n\nfunction Stepper({\n\torientation = \"horizontal\",\n\tvalue,\n\tclassName,\n\tchildren,\n\t...props\n}: StepperProps) {\n\tconst items = React.Children.toArray(children).filter(React.isValidElement);\n\n\tconst contextValue = React.useMemo<StepperContextValue>(\n\t\t() => ({ orientation, value }),\n\t\t[orientation, value],\n\t);\n\n\treturn (\n\t\t<StepperContext.Provider value={contextValue}>\n\t\t\t<div\n\t\t\t\tdata-slot=\"stepper\"\n\t\t\t\tdata-orientation={orientation}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"flex\",\n\t\t\t\t\torientation === \"horizontal\" ? \"flex-row\" : \"flex-col\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{items.map((child, index) => {\n\t\t\t\t\tif (!React.isValidElement<StepperItemProps>(child)) return child;\n\n\t\t\t\t\treturn React.cloneElement(child, {\n\t\t\t\t\t\tstep: child.props.step ?? index + 1,\n\t\t\t\t\t\tlast: child.props.last ?? index === items.length - 1,\n\t\t\t\t\t});\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</StepperContext.Provider>\n\t);\n}\n\ntype StepperItemProps = Omit<React.ComponentProps<\"div\">, \"children\"> & {\n\t/** Force a specific state instead of deriving it from the stepper `value`. */\n\tstate?: StepperState;\n\t/** 1-based position. Injected by `Stepper`; only set this to override. */\n\tstep?: number;\n\t/** Whether this is the last item (hides its connector). Injected by `Stepper`. */\n\tlast?: boolean;\n\t/** Custom indicator node. Defaults to a numbered circle / checkmark. */\n\tindicator?: React.ReactNode;\n\tchildren?: React.ReactNode;\n};\n\nfunction StepperItem({\n\tstate: stateOverride,\n\tstep = 1,\n\tlast = false,\n\tindicator,\n\tclassName,\n\tchildren,\n\t...props\n}: StepperItemProps) {\n\tconst { orientation, value } = useStepper();\n\tconst state = resolveState(step, value, stateOverride);\n\n\tconst itemContext = React.useMemo<StepperItemContextValue>(\n\t\t() => ({ state, step }),\n\t\t[state, step],\n\t);\n\n\treturn (\n\t\t<StepperItemContext.Provider value={itemContext}>\n\t\t\t<div\n\t\t\t\tdata-slot=\"stepper-item\"\n\t\t\t\tdata-state={state}\n\t\t\t\tdata-orientation={orientation}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"group/stepper-item flex min-w-0\",\n\t\t\t\t\torientation === \"horizontal\"\n\t\t\t\t\t\t? \"flex-1 flex-col gap-3 last:flex-none\"\n\t\t\t\t\t\t: \"flex-row items-stretch gap-3\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"flex\",\n\t\t\t\t\t\torientation === \"horizontal\"\n\t\t\t\t\t\t\t? \"items-center\"\n\t\t\t\t\t\t\t: \"flex-col items-center\",\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{indicator ?? <StepperIndicator />}\n\t\t\t\t\t{!last && <StepperSeparator />}\n\t\t\t\t</div>\n\n\t\t\t\t{children != null && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"flex min-w-0 flex-col gap-1\",\n\t\t\t\t\t\t\torientation === \"horizontal\"\n\t\t\t\t\t\t\t\t? \"pr-4\"\n\t\t\t\t\t\t\t\t: cn(\"pt-1\", !last && \"pb-8\"),\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</StepperItemContext.Provider>\n\t);\n}\n\nconst indicatorVariants = cva(\n\t\"relative flex size-7 shrink-0 items-center justify-center rounded-full text-gdt-sm font-semibold transition-colors sm:size-9\",\n\t{\n\t\tvariants: {\n\t\t\tstate: {\n\t\t\t\tcomplete:\n\t\t\t\t\t\"border border-transparent bg-action-primary text-fg-on-brand\",\n\t\t\t\tactive: \"border-2 border-line-focus bg-canvas text-fg-brand\",\n\t\t\t\tupcoming: \"border border-line bg-surface text-fg-secondary\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tstate: \"upcoming\",\n\t\t},\n\t},\n);\n\ntype StepperIndicatorProps = Omit<React.ComponentProps<\"div\">, \"children\"> &\n\tVariantProps<typeof indicatorVariants> & {\n\t\t/** Override the rendered glyph. Defaults to the step number / checkmark. */\n\t\tchildren?: React.ReactNode;\n\t};\n\nfunction StepperIndicator({\n\tclassName,\n\tstate: stateProp,\n\tchildren,\n\t...props\n}: StepperIndicatorProps) {\n\tconst { state, step } = useStepperItem();\n\tconst resolved = stateProp ?? state;\n\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"stepper-indicator\"\n\t\t\tdata-state={resolved}\n\t\t\tclassName={cn(indicatorVariants({ state: resolved }), className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children ??\n\t\t\t\t(resolved === \"complete\" ? (\n\t\t\t\t\t<CheckIcon className=\"size-4 sm:size-4.5\" strokeWidth={2.5} />\n\t\t\t\t) : (\n\t\t\t\t\tstep\n\t\t\t\t))}\n\t\t</div>\n\t);\n}\n\nconst separatorVariants = cva(\"shrink-0 rounded-full transition-colors\", {\n\tvariants: {\n\t\tstate: {\n\t\t\tcomplete: \"bg-action-primary\",\n\t\t\tactive: \"bg-line\",\n\t\t\tupcoming: \"bg-line\",\n\t\t},\n\t\torientation: {\n\t\t\thorizontal: \"h-0.5 flex-1\",\n\t\t\tvertical: \"w-0.5 flex-1 min-h-8\",\n\t\t},\n\t},\n\tdefaultVariants: {\n\t\tstate: \"upcoming\",\n\t\torientation: \"horizontal\",\n\t},\n});\n\nfunction StepperSeparator({\n\tclassName,\n\t...props\n}: React.ComponentProps<\"div\">) {\n\tconst { orientation } = useStepper();\n\tconst { state } = useStepperItem();\n\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"stepper-separator\"\n\t\t\taria-hidden=\"true\"\n\t\t\tclassName={cn(separatorVariants({ state, orientation }), className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nconst titleVariants = cva(\"text-gdt-sm font-bold\", {\n\tvariants: {\n\t\tstate: {\n\t\t\tcomplete: \"text-fg-primary\",\n\t\t\tactive: \"text-fg-brand\",\n\t\t\tupcoming: \"text-fg-secondary\",\n\t\t},\n\t},\n\tdefaultVariants: {\n\t\tstate: \"upcoming\",\n\t},\n});\n\nfunction StepperTitle({ className, ...props }: React.ComponentProps<\"p\">) {\n\tconst { state } = useStepperItem();\n\n\treturn (\n\t\t<p\n\t\t\tdata-slot=\"stepper-title\"\n\t\t\tclassName={cn(titleVariants({ state }), className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nconst descriptionVariants = cva(\"text-gdt-sm\", {\n\tvariants: {\n\t\tstate: {\n\t\t\tcomplete: \"text-fg-secondary\",\n\t\t\tactive: \"text-fg-secondary\",\n\t\t\tupcoming: \"text-fg-caption-placeholder\",\n\t\t},\n\t},\n\tdefaultVariants: {\n\t\tstate: \"upcoming\",\n\t},\n});\n\nfunction StepperDescription({\n\tclassName,\n\t...props\n}: React.ComponentProps<\"p\">) {\n\tconst { state } = useStepperItem();\n\n\treturn (\n\t\t<p\n\t\t\tdata-slot=\"stepper-description\"\n\t\t\tclassName={cn(descriptionVariants({ state }), className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\ntype StepperMetaProps = Omit<React.ComponentProps<\"div\">, \"children\"> & {\n\tdate?: React.ReactNode;\n\ttime?: React.ReactNode;\n};\n\n/** Date / timestamp caption pair. Placeholder colour regardless of state. */\nfunction StepperMeta({ date, time, className, ...props }: StepperMetaProps) {\n\tif (date == null && time == null) return null;\n\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"stepper-meta\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex flex-wrap items-center gap-x-2 gap-y-0.5 text-gdt-xs text-fg-caption-placeholder\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{date != null && <span>{date}</span>}\n\t\t\t{time != null && <span>{time}</span>}\n\t\t</div>\n\t);\n}\n\nexport {\n\tStepper,\n\tStepperItem,\n\tStepperIndicator,\n\tStepperSeparator,\n\tStepperTitle,\n\tStepperDescription,\n\tStepperMeta,\n\ttype StepperOrientation,\n\ttype StepperState,\n};\n","import { type ClassValue, clsx } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\nconst twMerge = extendTailwindMerge({\n\textend: {\n\t\tclassGroups: {\n\t\t\t\"font-size\": [\n\t\t\t\t{\n\t\t\t\t\ttext: [\n\t\t\t\t\t\t\"gdt-display\",\n\t\t\t\t\t\t\"gdt-h1\",\n\t\t\t\t\t\t\"gdt-h2\",\n\t\t\t\t\t\t\"gdt-h3\",\n\t\t\t\t\t\t\"gdt-h4\",\n\t\t\t\t\t\t\"gdt-h5\",\n\t\t\t\t\t\t\"gdt-xl\",\n\t\t\t\t\t\t\"gdt-lg\",\n\t\t\t\t\t\t\"gdt-md\",\n\t\t\t\t\t\t\"gdt-sm\",\n\t\t\t\t\t\t\"gdt-xs\",\n\t\t\t\t\t\t\"gdt-subtext\",\n\t\t\t\t\t\t\"gdt-capitalized\",\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n});\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n"],"mappings":"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","names":[]}