@journ/bloom 0.1.1

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 (278) hide show
  1. package/DESIGN.md +287 -0
  2. package/LICENSE +21 -0
  3. package/README.md +59 -0
  4. package/dist/accordion-parts.d.ts +9 -0
  5. package/dist/accordion-parts.js +37 -0
  6. package/dist/accordion.d.ts +10 -0
  7. package/dist/accordion.js +10 -0
  8. package/dist/alert-dialog-parts.d.ts +16 -0
  9. package/dist/alert-dialog-parts.js +33 -0
  10. package/dist/alert-dialog.d.ts +15 -0
  11. package/dist/alert-dialog.js +15 -0
  12. package/dist/alert.d.ts +48 -0
  13. package/dist/alert.js +51 -0
  14. package/dist/animated-size.d.ts +6 -0
  15. package/dist/animated-size.js +12 -0
  16. package/dist/avatar-parts.d.ts +10 -0
  17. package/dist/avatar-parts.js +20 -0
  18. package/dist/avatar.d.ts +9 -0
  19. package/dist/avatar.js +9 -0
  20. package/dist/badge.d.ts +38 -0
  21. package/dist/badge.js +22 -0
  22. package/dist/breadcrumbs.d.ts +18 -0
  23. package/dist/breadcrumbs.js +44 -0
  24. package/dist/bulk-bar.d.ts +13 -0
  25. package/dist/bulk-bar.js +27 -0
  26. package/dist/button.d.ts +40 -0
  27. package/dist/button.js +41 -0
  28. package/dist/calendar-parts.d.ts +17 -0
  29. package/dist/calendar-parts.js +90 -0
  30. package/dist/calendar.d.ts +17 -0
  31. package/dist/calendar.js +17 -0
  32. package/dist/card.d.ts +51 -0
  33. package/dist/card.js +63 -0
  34. package/dist/carousel-parts.d.ts +13 -0
  35. package/dist/carousel-parts.js +53 -0
  36. package/dist/carousel.d.ts +11 -0
  37. package/dist/carousel.js +11 -0
  38. package/dist/checkbox-parts.d.ts +8 -0
  39. package/dist/checkbox-parts.js +21 -0
  40. package/dist/checkbox.d.ts +8 -0
  41. package/dist/checkbox.js +8 -0
  42. package/dist/chip.d.ts +45 -0
  43. package/dist/chip.js +55 -0
  44. package/dist/collapsible-parts.d.ts +8 -0
  45. package/dist/collapsible-parts.js +22 -0
  46. package/dist/collapsible.d.ts +9 -0
  47. package/dist/collapsible.js +9 -0
  48. package/dist/combobox-parts.d.ts +22 -0
  49. package/dist/combobox-parts.js +54 -0
  50. package/dist/combobox.d.ts +26 -0
  51. package/dist/combobox.js +21 -0
  52. package/dist/command-palette-parts.d.ts +13 -0
  53. package/dist/command-palette-parts.js +19 -0
  54. package/dist/command-palette.d.ts +17 -0
  55. package/dist/command-palette.js +17 -0
  56. package/dist/composer.d.ts +12 -0
  57. package/dist/composer.js +21 -0
  58. package/dist/context-menu-parts.d.ts +15 -0
  59. package/dist/context-menu-parts.js +10 -0
  60. package/dist/context-menu.d.ts +20 -0
  61. package/dist/context-menu.js +13 -0
  62. package/dist/currency-input-parts.d.ts +8 -0
  63. package/dist/currency-input-parts.js +13 -0
  64. package/dist/currency-input.d.ts +8 -0
  65. package/dist/currency-input.js +8 -0
  66. package/dist/data-table-parts.d.ts +10 -0
  67. package/dist/data-table-parts.js +65 -0
  68. package/dist/data-table.d.ts +12 -0
  69. package/dist/data-table.js +12 -0
  70. package/dist/date-input-parts.d.ts +7 -0
  71. package/dist/date-input-parts.js +12 -0
  72. package/dist/date-input.d.ts +8 -0
  73. package/dist/date-input.js +8 -0
  74. package/dist/date-picker-parts.d.ts +11 -0
  75. package/dist/date-picker-parts.js +8 -0
  76. package/dist/date-picker.d.ts +20 -0
  77. package/dist/date-picker.js +15 -0
  78. package/dist/date-range-picker-parts.d.ts +11 -0
  79. package/dist/date-range-picker-parts.js +8 -0
  80. package/dist/date-range-picker.d.ts +20 -0
  81. package/dist/date-range-picker.js +15 -0
  82. package/dist/description-list.d.ts +12 -0
  83. package/dist/description-list.js +23 -0
  84. package/dist/dialog-parts.d.ts +15 -0
  85. package/dist/dialog-parts.js +32 -0
  86. package/dist/dialog.d.ts +15 -0
  87. package/dist/dialog.js +15 -0
  88. package/dist/divider.d.ts +6 -0
  89. package/dist/divider.js +12 -0
  90. package/dist/drawer-parts.d.ts +13 -0
  91. package/dist/drawer-parts.js +31 -0
  92. package/dist/drawer.d.ts +15 -0
  93. package/dist/drawer.js +15 -0
  94. package/dist/dropdown-menu-parts.d.ts +15 -0
  95. package/dist/dropdown-menu-parts.js +10 -0
  96. package/dist/dropdown-menu.d.ts +20 -0
  97. package/dist/dropdown-menu.js +13 -0
  98. package/dist/empty-state.d.ts +16 -0
  99. package/dist/empty-state.js +40 -0
  100. package/dist/field-parts.d.ts +10 -0
  101. package/dist/field-parts.js +25 -0
  102. package/dist/field.d.ts +11 -0
  103. package/dist/field.js +11 -0
  104. package/dist/file-dropzone-parts.d.ts +12 -0
  105. package/dist/file-dropzone-parts.js +32 -0
  106. package/dist/file-dropzone.d.ts +10 -0
  107. package/dist/file-dropzone.js +10 -0
  108. package/dist/heading.d.ts +31 -0
  109. package/dist/heading.js +26 -0
  110. package/dist/hover-card-parts.d.ts +8 -0
  111. package/dist/hover-card-parts.js +20 -0
  112. package/dist/hover-card.d.ts +9 -0
  113. package/dist/hover-card.js +9 -0
  114. package/dist/icon-button.d.ts +44 -0
  115. package/dist/icon-button.js +39 -0
  116. package/dist/icon.d.ts +30 -0
  117. package/dist/icon.js +27 -0
  118. package/dist/index.d.ts +96 -0
  119. package/dist/index.js +89 -0
  120. package/dist/input.d.ts +7 -0
  121. package/dist/input.js +14 -0
  122. package/dist/lib/cn.d.ts +6 -0
  123. package/dist/lib/cn.js +7 -0
  124. package/dist/lib/icon-tile.d.ts +32 -0
  125. package/dist/lib/icon-tile.js +23 -0
  126. package/dist/lib/interactive.d.ts +11 -0
  127. package/dist/lib/interactive.js +19 -0
  128. package/dist/lib/menu-parts.d.ts +25 -0
  129. package/dist/lib/menu-parts.js +41 -0
  130. package/dist/lib/modal-content.d.ts +10 -0
  131. package/dist/lib/modal-content.js +17 -0
  132. package/dist/lib/modal-parts.d.ts +7 -0
  133. package/dist/lib/modal-parts.js +15 -0
  134. package/dist/lib/overlay.d.ts +41 -0
  135. package/dist/lib/overlay.js +22 -0
  136. package/dist/lib/picker.d.ts +18 -0
  137. package/dist/lib/picker.js +25 -0
  138. package/dist/lib/text-styles.d.ts +25 -0
  139. package/dist/lib/text-styles.js +25 -0
  140. package/dist/lib/theme.d.ts +43 -0
  141. package/dist/lib/theme.js +45 -0
  142. package/dist/lib/tones.d.ts +52 -0
  143. package/dist/lib/tones.js +55 -0
  144. package/dist/lib/tv.d.ts +2 -0
  145. package/dist/lib/tv.js +2 -0
  146. package/dist/lib/use-enter.d.ts +15 -0
  147. package/dist/lib/use-enter.js +54 -0
  148. package/dist/link.d.ts +8 -0
  149. package/dist/link.js +13 -0
  150. package/dist/markdown.d.ts +10 -0
  151. package/dist/markdown.js +70 -0
  152. package/dist/message.d.ts +15 -0
  153. package/dist/message.js +25 -0
  154. package/dist/month-picker-parts.d.ts +2 -0
  155. package/dist/month-picker-parts.js +3 -0
  156. package/dist/month-picker.d.ts +15 -0
  157. package/dist/month-picker.js +15 -0
  158. package/dist/month-stepper-parts.d.ts +11 -0
  159. package/dist/month-stepper-parts.js +37 -0
  160. package/dist/month-stepper.d.ts +10 -0
  161. package/dist/month-stepper.js +10 -0
  162. package/dist/multiple-selector-parts.d.ts +18 -0
  163. package/dist/multiple-selector-parts.js +28 -0
  164. package/dist/multiple-selector.d.ts +28 -0
  165. package/dist/multiple-selector.js +23 -0
  166. package/dist/nav-bar.d.ts +10 -0
  167. package/dist/nav-bar.js +23 -0
  168. package/dist/navigation-menu-parts.d.ts +12 -0
  169. package/dist/navigation-menu-parts.js +47 -0
  170. package/dist/navigation-menu.d.ts +12 -0
  171. package/dist/navigation-menu.js +12 -0
  172. package/dist/otp-input-parts.d.ts +8 -0
  173. package/dist/otp-input-parts.js +17 -0
  174. package/dist/otp-input.d.ts +9 -0
  175. package/dist/otp-input.js +9 -0
  176. package/dist/page-header.d.ts +12 -0
  177. package/dist/page-header.js +23 -0
  178. package/dist/page.d.ts +45 -0
  179. package/dist/page.js +41 -0
  180. package/dist/pagination.d.ts +18 -0
  181. package/dist/pagination.js +49 -0
  182. package/dist/pill-select.d.ts +5 -0
  183. package/dist/pill-select.js +21 -0
  184. package/dist/popover-parts.d.ts +9 -0
  185. package/dist/popover-parts.js +21 -0
  186. package/dist/popover.d.ts +10 -0
  187. package/dist/popover.js +10 -0
  188. package/dist/portal.d.ts +2 -0
  189. package/dist/portal.js +2 -0
  190. package/dist/progress-parts.d.ts +38 -0
  191. package/dist/progress-parts.js +25 -0
  192. package/dist/progress.d.ts +8 -0
  193. package/dist/progress.js +8 -0
  194. package/dist/quantity-input-parts.d.ts +11 -0
  195. package/dist/quantity-input-parts.js +36 -0
  196. package/dist/quantity-input.d.ts +10 -0
  197. package/dist/quantity-input.js +10 -0
  198. package/dist/radio-parts.d.ts +7 -0
  199. package/dist/radio-parts.js +19 -0
  200. package/dist/radio.d.ts +8 -0
  201. package/dist/radio.js +8 -0
  202. package/dist/scroll-area-parts.d.ts +9 -0
  203. package/dist/scroll-area-parts.js +23 -0
  204. package/dist/scroll-area.d.ts +10 -0
  205. package/dist/scroll-area.js +10 -0
  206. package/dist/select-parts.d.ts +13 -0
  207. package/dist/select-parts.js +46 -0
  208. package/dist/select.d.ts +14 -0
  209. package/dist/select.js +14 -0
  210. package/dist/sheet-parts.d.ts +33 -0
  211. package/dist/sheet-parts.js +41 -0
  212. package/dist/sheet.d.ts +16 -0
  213. package/dist/sheet.js +16 -0
  214. package/dist/sidebar.d.ts +24 -0
  215. package/dist/sidebar.js +58 -0
  216. package/dist/skeleton.d.ts +5 -0
  217. package/dist/skeleton.js +11 -0
  218. package/dist/slider-parts.d.ts +9 -0
  219. package/dist/slider-parts.js +26 -0
  220. package/dist/slider.d.ts +10 -0
  221. package/dist/slider.js +10 -0
  222. package/dist/spinner.d.ts +5 -0
  223. package/dist/spinner.js +10 -0
  224. package/dist/stack-parts.d.ts +39 -0
  225. package/dist/stack-parts.js +35 -0
  226. package/dist/stack.d.ts +10 -0
  227. package/dist/stack.js +10 -0
  228. package/dist/stat.d.ts +14 -0
  229. package/dist/stat.js +29 -0
  230. package/dist/step-button.d.ts +10 -0
  231. package/dist/step-button.js +14 -0
  232. package/dist/stepper-parts.d.ts +10 -0
  233. package/dist/stepper-parts.js +33 -0
  234. package/dist/stepper.d.ts +11 -0
  235. package/dist/stepper.js +11 -0
  236. package/dist/styles.css +2 -0
  237. package/dist/switch-parts.d.ts +7 -0
  238. package/dist/switch-parts.js +19 -0
  239. package/dist/switch.d.ts +8 -0
  240. package/dist/switch.js +8 -0
  241. package/dist/table.d.ts +20 -0
  242. package/dist/table.js +48 -0
  243. package/dist/tabs-parts.d.ts +9 -0
  244. package/dist/tabs-parts.js +25 -0
  245. package/dist/tabs.d.ts +10 -0
  246. package/dist/tabs.js +10 -0
  247. package/dist/tag-input-parts.d.ts +15 -0
  248. package/dist/tag-input-parts.js +24 -0
  249. package/dist/tag-input.d.ts +10 -0
  250. package/dist/tag-input.js +10 -0
  251. package/dist/text-morph.d.ts +6 -0
  252. package/dist/text-morph.js +14 -0
  253. package/dist/text-shimmer.d.ts +9 -0
  254. package/dist/text-shimmer.js +12 -0
  255. package/dist/text.d.ts +38 -0
  256. package/dist/text.js +32 -0
  257. package/dist/textarea.d.ts +5 -0
  258. package/dist/textarea.js +12 -0
  259. package/dist/time-range-parts.d.ts +10 -0
  260. package/dist/time-range-parts.js +22 -0
  261. package/dist/time-range.d.ts +10 -0
  262. package/dist/time-range.js +10 -0
  263. package/dist/toast-parts.d.ts +11 -0
  264. package/dist/toast-parts.js +39 -0
  265. package/dist/toast.d.ts +13 -0
  266. package/dist/toast.js +12 -0
  267. package/dist/toggle-group-parts.d.ts +7 -0
  268. package/dist/toggle-group-parts.js +17 -0
  269. package/dist/toggle-group.d.ts +8 -0
  270. package/dist/toggle-group.js +8 -0
  271. package/dist/tokens.css +64 -0
  272. package/dist/tooltip-parts.d.ts +9 -0
  273. package/dist/tooltip-parts.js +21 -0
  274. package/dist/tooltip.d.ts +10 -0
  275. package/dist/tooltip.js +10 -0
  276. package/dist/touch-target.d.ts +7 -0
  277. package/dist/touch-target.js +10 -0
  278. package/package.json +71 -0
@@ -0,0 +1,24 @@
1
+ import { ComponentPropsWithRef } from "react";
2
+ //#region src/sidebar.d.ts
3
+ declare const Layout: ({ className, ...props }: ComponentPropsWithRef<'div'>) => import("react").JSX.Element;
4
+ declare const Content: ({ className, ...props }: ComponentPropsWithRef<'main'>) => import("react").JSX.Element;
5
+ declare const Root: ({ className, ...props }: ComponentPropsWithRef<'aside'>) => import("react").JSX.Element;
6
+ declare const Header: ({ className, ...props }: ComponentPropsWithRef<'div'>) => import("react").JSX.Element;
7
+ declare const Body: ({ className, ...props }: ComponentPropsWithRef<'nav'>) => import("react").JSX.Element;
8
+ declare const Section: ({ className, ...props }: ComponentPropsWithRef<'div'>) => import("react").JSX.Element;
9
+ declare const Heading: ({ className, ...props }: ComponentPropsWithRef<'h3'>) => import("react").JSX.Element;
10
+ declare const Item: ({ className, children, ...props }: ComponentPropsWithRef<'a'>) => import("react").JSX.Element;
11
+ declare const Footer: ({ className, ...props }: ComponentPropsWithRef<'div'>) => import("react").JSX.Element;
12
+ declare const Sidebar: {
13
+ Layout: typeof Layout;
14
+ Root: typeof Root;
15
+ Header: typeof Header;
16
+ Body: typeof Body;
17
+ Section: typeof Section;
18
+ Heading: typeof Heading;
19
+ Item: typeof Item;
20
+ Footer: typeof Footer;
21
+ Content: typeof Content;
22
+ };
23
+ //#endregion
24
+ export { Sidebar };
@@ -0,0 +1,58 @@
1
+ import { cn } from "./lib/cn.js";
2
+ import { interactive } from "./lib/interactive.js";
3
+ import { selectedWhenCurrent } from "./lib/text-styles.js";
4
+ import { faintBorder, surfaceFill } from "./lib/theme.js";
5
+ import { TouchTarget } from "./touch-target.js";
6
+ import { jsx } from "react/jsx-runtime";
7
+ import { Sidebar as Sidebar$1 } from "@journ/nude/sidebar";
8
+ //#region src/sidebar.tsx
9
+ const Layout = ({ className, ...props }) => /* @__PURE__ */ jsx(Sidebar$1.Layout, {
10
+ ...props,
11
+ className: cn("flex min-h-dvh w-full", className)
12
+ });
13
+ const Content = ({ className, ...props }) => /* @__PURE__ */ jsx(Sidebar$1.Content, {
14
+ ...props,
15
+ className: cn("min-w-0 flex-1 p-6 lg:p-10", className)
16
+ });
17
+ const Root = ({ className, ...props }) => /* @__PURE__ */ jsx(Sidebar$1.Root, {
18
+ ...props,
19
+ className: cn(surfaceFill, faintBorder, "sticky top-0 flex h-dvh w-64 shrink-0 flex-col gap-4 border-r p-4", className)
20
+ });
21
+ const Header = ({ className, ...props }) => /* @__PURE__ */ jsx(Sidebar$1.Header, {
22
+ ...props,
23
+ className: cn("flex items-center gap-3 px-2 pt-2", className)
24
+ });
25
+ const Body = ({ className, ...props }) => /* @__PURE__ */ jsx(Sidebar$1.Body, {
26
+ ...props,
27
+ className: cn("scrollbar-bloom flex flex-1 flex-col gap-6 overflow-y-auto", className)
28
+ });
29
+ const Section = ({ className, ...props }) => /* @__PURE__ */ jsx(Sidebar$1.Section, {
30
+ ...props,
31
+ className: cn("flex flex-col gap-1", className)
32
+ });
33
+ const Heading = ({ className, ...props }) => /* @__PURE__ */ jsx(Sidebar$1.Heading, {
34
+ ...props,
35
+ className: cn("px-3 pb-1 text-xs opacity-50", className)
36
+ });
37
+ const Item = ({ className, children, ...props }) => /* @__PURE__ */ jsx(Sidebar$1.Item, {
38
+ ...props,
39
+ className: cn(interactive, "flex items-center gap-3 px-3 py-2 text-sm/6 font-medium [&>svg]:size-4 [&>svg]:shrink-0", selectedWhenCurrent, className),
40
+ children: /* @__PURE__ */ jsx(TouchTarget, { children })
41
+ });
42
+ const Footer = ({ className, ...props }) => /* @__PURE__ */ jsx(Sidebar$1.Footer, {
43
+ ...props,
44
+ className: cn("flex items-center gap-3 border-t border-current/10 px-2 pt-4", className)
45
+ });
46
+ const Sidebar = {
47
+ Layout,
48
+ Root,
49
+ Header,
50
+ Body,
51
+ Section,
52
+ Heading,
53
+ Item,
54
+ Footer,
55
+ Content
56
+ };
57
+ //#endregion
58
+ export { Sidebar };
@@ -0,0 +1,5 @@
1
+ import { ComponentPropsWithRef } from "react";
2
+ //#region src/skeleton.d.ts
3
+ declare const Skeleton: ({ className, ...props }: ComponentPropsWithRef<'div'>) => import("react").JSX.Element;
4
+ //#endregion
5
+ export { Skeleton };
@@ -0,0 +1,11 @@
1
+ import { cn } from "./lib/cn.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { Skeleton as Skeleton$1 } from "@journ/nude/skeleton";
4
+ //#region src/skeleton.tsx
5
+ const Skeleton = ({ className, ...props }) => /* @__PURE__ */ jsx(Skeleton$1, {
6
+ "aria-hidden": true,
7
+ ...props,
8
+ className: cn("h-4 animate-pulse bg-current/10 motion-reduce:animate-none", className)
9
+ });
10
+ //#endregion
11
+ export { Skeleton };
@@ -0,0 +1,9 @@
1
+ import { ComponentPropsWithRef } from "react";
2
+ import * as Nude from "@journ/nude/slider-parts";
3
+ //#region src/slider-parts.d.ts
4
+ declare const Root: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Root>) => import("react").JSX.Element;
5
+ declare const Track: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Track>) => import("react").JSX.Element;
6
+ declare const Range: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Range>) => import("react").JSX.Element;
7
+ declare const Thumb: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Thumb>) => import("react").JSX.Element;
8
+ //#endregion
9
+ export { Range, Root, Thumb, Track };
@@ -0,0 +1,26 @@
1
+ "use client";
2
+ import { cn } from "./lib/cn.js";
3
+ import { canvasFill } from "./lib/theme.js";
4
+ import { TouchTarget } from "./touch-target.js";
5
+ import { jsx } from "react/jsx-runtime";
6
+ import * as Nude from "@journ/nude/slider-parts";
7
+ //#region src/slider-parts.tsx
8
+ const Root = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Root, {
9
+ ...props,
10
+ className: cn("relative flex h-6 w-full touch-none items-center select-none data-disabled:opacity-50", className)
11
+ });
12
+ const Track = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Track, {
13
+ ...props,
14
+ className: cn("relative h-2 grow overflow-hidden rounded-full bg-current/10", className)
15
+ });
16
+ const Range = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Range, {
17
+ ...props,
18
+ className: cn("absolute h-full bg-current", className)
19
+ });
20
+ const Thumb = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Thumb, {
21
+ ...props,
22
+ className: cn(canvasFill, "relative block size-5 rounded-full border-2 border-current outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-bloom-sky", className),
23
+ children: /* @__PURE__ */ jsx(TouchTarget, {})
24
+ });
25
+ //#endregion
26
+ export { Range, Root, Thumb, Track };
@@ -0,0 +1,10 @@
1
+ import { Range, Root, Thumb, Track } from "./slider-parts.js";
2
+ //#region src/slider.d.ts
3
+ declare const Slider: {
4
+ Root: typeof Root;
5
+ Track: typeof Track;
6
+ Range: typeof Range;
7
+ Thumb: typeof Thumb;
8
+ };
9
+ //#endregion
10
+ export { Slider };
package/dist/slider.js ADDED
@@ -0,0 +1,10 @@
1
+ import { Range, Root, Thumb, Track } from "./slider-parts.js";
2
+ //#region src/slider.tsx
3
+ const Slider = {
4
+ Root,
5
+ Track,
6
+ Range,
7
+ Thumb
8
+ };
9
+ //#endregion
10
+ export { Slider };
@@ -0,0 +1,5 @@
1
+ import { ComponentPropsWithRef } from "react";
2
+ //#region src/spinner.d.ts
3
+ declare const Spinner: ({ className, ...props }: ComponentPropsWithRef<'svg'>) => import("react").JSX.Element;
4
+ //#endregion
5
+ export { Spinner };
@@ -0,0 +1,10 @@
1
+ import { cn } from "./lib/cn.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { Spinner as Spinner$1 } from "@journ/nude/spinner";
4
+ //#region src/spinner.tsx
5
+ const Spinner = ({ className, ...props }) => /* @__PURE__ */ jsx(Spinner$1, {
6
+ ...props,
7
+ className: cn("size-5 animate-spin motion-reduce:animate-none", className)
8
+ });
9
+ //#endregion
10
+ export { Spinner };
@@ -0,0 +1,39 @@
1
+ import { VariantProps } from "./lib/tv.js";
2
+ import { ComponentPropsWithRef } from "react";
3
+ import * as Nude from "@journ/nude/stack-parts";
4
+ //#region src/stack-parts.d.ts
5
+ declare const Root: ({ className, ...props }: Nude.RootProps) => import("react").JSX.Element;
6
+ declare const stackItem: import("tailwind-variants").TVReturnType<{
7
+ tone: {
8
+ readonly surface: "bg-bloom-surface dark:bg-bloom-surface-dark font-bloom-display text-bloom-foreground dark:text-bloom-foreground-dark border border-bloom-line dark:border-bloom-line-dark";
9
+ readonly coral: string;
10
+ readonly yellow: string;
11
+ readonly indigo: string;
12
+ readonly mint: string;
13
+ readonly sky: string;
14
+ };
15
+ }, undefined, "rounded-bloom relative -mt-6 flex flex-col gap-3 p-5 pb-9 data-[active=true]:pb-5", {
16
+ tone: {
17
+ readonly surface: "bg-bloom-surface dark:bg-bloom-surface-dark font-bloom-display text-bloom-foreground dark:text-bloom-foreground-dark border border-bloom-line dark:border-bloom-line-dark";
18
+ readonly coral: string;
19
+ readonly yellow: string;
20
+ readonly indigo: string;
21
+ readonly mint: string;
22
+ readonly sky: string;
23
+ };
24
+ }, undefined, import("tailwind-variants").TVReturnTypeLike<{
25
+ tone: {
26
+ readonly surface: "bg-bloom-surface dark:bg-bloom-surface-dark font-bloom-display text-bloom-foreground dark:text-bloom-foreground-dark border border-bloom-line dark:border-bloom-line-dark";
27
+ readonly coral: string;
28
+ readonly yellow: string;
29
+ readonly indigo: string;
30
+ readonly mint: string;
31
+ readonly sky: string;
32
+ };
33
+ }, undefined>>;
34
+ type ItemProps = Nude.ItemProps & VariantProps<typeof stackItem>;
35
+ declare const Item: ({ tone, className, ...props }: ItemProps) => import("react").JSX.Element;
36
+ declare const Trigger: ({ className, ...props }: ComponentPropsWithRef<'button'>) => import("react").JSX.Element;
37
+ declare const Content: ({ className, ...props }: ComponentPropsWithRef<'div'>) => import("react").JSX.Element;
38
+ //#endregion
39
+ export { Content, Item, Root, Trigger };
@@ -0,0 +1,35 @@
1
+ "use client";
2
+ import { tv } from "./lib/tv.js";
3
+ import { cn } from "./lib/cn.js";
4
+ import { pressReset } from "./lib/interactive.js";
5
+ import { displayTitle } from "./lib/text-styles.js";
6
+ import { surfaceTones } from "./lib/tones.js";
7
+ import { jsx } from "react/jsx-runtime";
8
+ import * as Nude from "@journ/nude/stack-parts";
9
+ //#region src/stack-parts.tsx
10
+ const Root = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Root, {
11
+ ...props,
12
+ className: cn("flex flex-col pt-6", className)
13
+ });
14
+ const stackItem = tv({
15
+ base: "rounded-bloom relative -mt-6 flex flex-col gap-3 p-5 pb-9 data-[active=true]:pb-5",
16
+ variants: { tone: surfaceTones },
17
+ defaultVariants: { tone: "surface" }
18
+ });
19
+ const Item = ({ tone, className, ...props }) => /* @__PURE__ */ jsx(Nude.Item, {
20
+ ...props,
21
+ className: stackItem({
22
+ tone,
23
+ class: className
24
+ })
25
+ });
26
+ const Trigger = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Trigger, {
27
+ ...props,
28
+ className: cn(pressReset, displayTitle, "flex w-full cursor-pointer items-start justify-between gap-4 rounded-bloom text-left outline-none focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-bloom-sky", className)
29
+ });
30
+ const Content = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Content, {
31
+ ...props,
32
+ className: cn("flex flex-col gap-3 data-[active=false]:hidden", className)
33
+ });
34
+ //#endregion
35
+ export { Content, Item, Root, Trigger };
@@ -0,0 +1,10 @@
1
+ import { Content, Item, Root, Trigger } from "./stack-parts.js";
2
+ //#region src/stack.d.ts
3
+ declare const Stack: {
4
+ Root: typeof Root;
5
+ Item: typeof Item;
6
+ Trigger: typeof Trigger;
7
+ Content: typeof Content;
8
+ };
9
+ //#endregion
10
+ export { Stack };
package/dist/stack.js ADDED
@@ -0,0 +1,10 @@
1
+ import { Content, Item, Root, Trigger } from "./stack-parts.js";
2
+ //#region src/stack.tsx
3
+ const Stack = {
4
+ Root,
5
+ Item,
6
+ Trigger,
7
+ Content
8
+ };
9
+ //#endregion
10
+ export { Stack };
package/dist/stat.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ import { ComponentPropsWithRef } from "react";
2
+ //#region src/stat.d.ts
3
+ declare const Root: ({ className, ...props }: ComponentPropsWithRef<'div'>) => import("react").JSX.Element;
4
+ declare const Label: ({ className, ...props }: ComponentPropsWithRef<'p'>) => import("react").JSX.Element;
5
+ declare const Value: ({ className, ...props }: ComponentPropsWithRef<'p'>) => import("react").JSX.Element;
6
+ declare const Hint: ({ className, ...props }: ComponentPropsWithRef<'p'>) => import("react").JSX.Element;
7
+ declare const Stat: {
8
+ Root: typeof Root;
9
+ Label: typeof Label;
10
+ Value: typeof Value;
11
+ Hint: typeof Hint;
12
+ };
13
+ //#endregion
14
+ export { Stat };
package/dist/stat.js ADDED
@@ -0,0 +1,29 @@
1
+ import { cn } from "./lib/cn.js";
2
+ import { displayLabel } from "./lib/text-styles.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { Stat as Stat$1 } from "@journ/nude/stat";
5
+ //#region src/stat.tsx
6
+ const Root = ({ className, ...props }) => /* @__PURE__ */ jsx(Stat$1.Root, {
7
+ ...props,
8
+ className: cn("flex flex-col gap-1", className)
9
+ });
10
+ const Label = ({ className, ...props }) => /* @__PURE__ */ jsx(Stat$1.Label, {
11
+ ...props,
12
+ className: cn(displayLabel, className)
13
+ });
14
+ const Value = ({ className, ...props }) => /* @__PURE__ */ jsx(Stat$1.Value, {
15
+ ...props,
16
+ className: cn("font-mono text-2xl/8 tabular-nums", className)
17
+ });
18
+ const Hint = ({ className, ...props }) => /* @__PURE__ */ jsx(Stat$1.Hint, {
19
+ ...props,
20
+ className: cn("text-xs/5 opacity-60", className)
21
+ });
22
+ const Stat = {
23
+ Root,
24
+ Label,
25
+ Value,
26
+ Hint
27
+ };
28
+ //#endregion
29
+ export { Stat };
@@ -0,0 +1,10 @@
1
+ import { IconButtonProps } from "./icon-button.js";
2
+ import { LucideIcon } from "lucide-react";
3
+ //#region src/step-button.d.ts
4
+ type StepButtonStyle = Pick<IconButtonProps, 'tone' | 'size' | 'className' | 'children'>;
5
+ declare const stepButton: (Icon: LucideIcon, { tone, size, className, children }: StepButtonStyle) => {
6
+ className: string;
7
+ children: import("react").JSX.Element;
8
+ };
9
+ //#endregion
10
+ export { stepButton };
@@ -0,0 +1,14 @@
1
+ import { TouchTarget } from "./touch-target.js";
2
+ import { iconButton } from "./icon-button.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ //#region src/step-button.tsx
5
+ const stepButton = (Icon, { tone = "ghost", size = "sm", className, children }) => ({
6
+ className: iconButton({
7
+ tone,
8
+ size,
9
+ class: className
10
+ }),
11
+ children: /* @__PURE__ */ jsx(TouchTarget, { children: children ?? /* @__PURE__ */ jsx(Icon, {}) })
12
+ });
13
+ //#endregion
14
+ export { stepButton };
@@ -0,0 +1,10 @@
1
+ import { ComponentPropsWithRef } from "react";
2
+ import * as Nude from "@journ/nude/stepper-parts";
3
+ //#region src/stepper-parts.d.ts
4
+ declare const Root: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Root>) => import("react").JSX.Element;
5
+ declare const Item: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Item>) => import("react").JSX.Element;
6
+ declare const Indicator: ({ className, children, ...props }: ComponentPropsWithRef<'span'>) => import("react").JSX.Element;
7
+ declare const Label: ({ className, ...props }: ComponentPropsWithRef<'span'>) => import("react").JSX.Element;
8
+ declare const Description: ({ className, ...props }: ComponentPropsWithRef<'span'>) => import("react").JSX.Element;
9
+ //#endregion
10
+ export { Description, Indicator, Item, Label, Root };
@@ -0,0 +1,33 @@
1
+ "use client";
2
+ import { cn } from "./lib/cn.js";
3
+ import { mutedText } from "./lib/text-styles.js";
4
+ import { Check } from "lucide-react";
5
+ import { jsx } from "react/jsx-runtime";
6
+ import * as Nude from "@journ/nude/stepper-parts";
7
+ //#region src/stepper-parts.tsx
8
+ const Root = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Root, {
9
+ ...props,
10
+ className: cn("flex flex-col gap-4 sm:flex-row sm:gap-6", className)
11
+ });
12
+ const Item = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Item, {
13
+ ...props,
14
+ className: cn("group flex flex-1 items-start gap-3 data-[status=upcoming]:opacity-60", className)
15
+ });
16
+ const Indicator = ({ className, children, ...props }) => {
17
+ const { status } = Nude.useStepperItem();
18
+ return /* @__PURE__ */ jsx(Nude.Indicator, {
19
+ ...props,
20
+ className: cn("grid size-8 shrink-0 place-items-center rounded-full bg-current/10 font-mono text-xs tabular-nums", "group-data-[status=current]:bg-transparent group-data-[status=current]:ring-1 group-data-[status=current]:ring-current", "group-data-[status=complete]:bg-bloom-mint group-data-[status=complete]:text-bloom-ink [&>svg]:size-4", className),
21
+ children: children ?? (status === "complete" ? /* @__PURE__ */ jsx(Check, {}) : void 0)
22
+ });
23
+ };
24
+ const Label = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Label, {
25
+ ...props,
26
+ className: cn("block text-sm/6 font-medium", className)
27
+ });
28
+ const Description = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Description, {
29
+ ...props,
30
+ className: cn("block", mutedText, className)
31
+ });
32
+ //#endregion
33
+ export { Description, Indicator, Item, Label, Root };
@@ -0,0 +1,11 @@
1
+ import { Description, Indicator, Item, Label, Root } from "./stepper-parts.js";
2
+ //#region src/stepper.d.ts
3
+ declare const Stepper: {
4
+ Root: typeof Root;
5
+ Item: typeof Item;
6
+ Indicator: typeof Indicator;
7
+ Label: typeof Label;
8
+ Description: typeof Description;
9
+ };
10
+ //#endregion
11
+ export { Stepper };
@@ -0,0 +1,11 @@
1
+ import { Description, Indicator, Item, Label, Root } from "./stepper-parts.js";
2
+ //#region src/stepper.tsx
3
+ const Stepper = {
4
+ Root,
5
+ Item,
6
+ Indicator,
7
+ Label,
8
+ Description
9
+ };
10
+ //#endregion
11
+ export { Stepper };
@@ -0,0 +1,2 @@
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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--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-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-500:oklch(63.7% .237 25.331);--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-lg:32rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-lg:1.125rem;--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-5xl:3rem;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--radius-sm:.25rem;--radius-xl:.75rem;--radius-3xl:1.5rem;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bloom-ink:oklch(16% 0 0);--color-bloom-paper:oklch(98.5% 0 0);--color-bloom-coral:oklch(65% .24 26);--color-bloom-yellow:oklch(87% .17 92);--color-bloom-indigo:oklch(62% .19 275);--color-bloom-mint:oklch(74% .21 152);--color-bloom-sky:oklch(70% .15 245);--color-bloom-canvas:oklch(100% 0 0);--color-bloom-surface:oklch(100% 0 0);--color-bloom-foreground:oklch(18% 0 0);--color-bloom-accent:oklch(52% .13 75);--color-bloom-line:oklch(88.5% .004 95);--color-bloom-canvas-dark:oklch(16% 0 0);--color-bloom-surface-dark:oklch(16% 0 0);--color-bloom-foreground-dark:oklch(98.5% 0 0);--color-bloom-accent-dark:oklch(87% .17 92);--color-bloom-line-dark:oklch(22.6% 0 0);--font-bloom-display:"Hedvig Letters Sans", ui-sans-serif, system-ui, sans-serif;--radius-bloom:0rem;--animate-bloom-shimmer:bloom-shimmer 2.2s linear infinite}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.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}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{inset-inline:0}.inset-y-0{inset-block:0}.top-0{top:0}.top-1\/2{top:50%}.top-full{top:100%}.right-0{right:0}.right-3{right:calc(var(--spacing) * 3)}.bottom-0{bottom:0}.bottom-4{bottom:calc(var(--spacing) * 4)}.left-0{left:0}.left-1\/2{left:50%}.isolate{isolation:isolate}.z-50{z-index:50}.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-1{margin-inline:calc(var(--spacing) * -1)}.mx-auto{margin-inline:auto}.my-1{margin-block:var(--spacing)}.my-3{margin-block:calc(var(--spacing) * 3)}.my-6{margin-block:calc(var(--spacing) * 6)}.-mt-4{margin-top:calc(var(--spacing) * -4)}.-mt-6{margin-top:calc(var(--spacing) * -6)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-auto{margin-top:auto}.mr-auto{margin-right:auto}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.-ml-3{margin-left:calc(var(--spacing) * -3)}.-ml-4{margin-left:calc(var(--spacing) * -4)}.ml-auto{margin-left:auto}.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}.table{display:table}.aspect-square{aspect-ratio:1}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-14{width:calc(var(--spacing) * 14);height:calc(var(--spacing) * 14)}.size-\[max\(100\%\,2\.75rem\)\]{width:max(100%,2.75rem);height:max(100%,2.75rem)}.size-full{width:100%;height:100%}.h-\(--radix-navigation-menu-viewport-height\){height:var(--radix-navigation-menu-viewport-height)}.h-2{height:calc(var(--spacing) * 2)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-dvh{height:100dvh}.h-full{height:100%}.h-px{height:1px}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-\[85dvh\]{max-height:85dvh}.max-h-\[90dvh\]{max-height:90dvh}.min-h-0{min-height:0}.min-h-dvh{min-height:100dvh}.w-11{width:calc(var(--spacing) * 11)}.w-24{width:calc(var(--spacing) * 24)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-\[calc\(100\%-2rem\)\]{width:calc(100% - 2rem)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-60{max-width:calc(var(--spacing) * 60)}.max-w-lg{max-width:var(--container-lg)}.max-w-max{max-width:max-content}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.min-w-\(--radix-select-trigger-width\){min-width:var(--radix-select-trigger-width)}.min-w-0{min-width:0}.min-w-10{min-width:calc(var(--spacing) * 10)}.min-w-24{min-width:calc(var(--spacing) * 24)}.min-w-36{min-width:calc(var(--spacing) * 36)}.min-w-40{min-width:calc(var(--spacing) * 40)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-top{transform-origin:top}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-bloom-shimmer{animation:var(--animate-bloom-shimmer)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize-y{resize:vertical}.scrollbar-bloom{scrollbar-width:thin;scrollbar-color:currentColor transparent}@supports (color:color-mix(in lab, red, red)){.scrollbar-bloom{scrollbar-color:color-mix(in oklab, currentColor 30%, transparent) transparent}}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-\[13px\]{gap:13px}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-y-1{row-gap:var(--spacing)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[inherit\]{border-radius:inherit}.rounded-bloom{border-radius:var(--radius-bloom)}.rounded-full{border-radius:3.40282e38px}.rounded-sm{border-radius:var(--radius-sm)}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-bloom-coral\/40{border-color:#ff343866}@supports (color:color-mix(in lab, red, red)){.border-bloom-coral\/40{border-color:color-mix(in oklab, var(--color-bloom-coral) 40%, transparent)}}.border-bloom-indigo\/40{border-color:#6875f666}@supports (color:color-mix(in lab, red, red)){.border-bloom-indigo\/40{border-color:color-mix(in oklab, var(--color-bloom-indigo) 40%, transparent)}}.border-bloom-line{border-color:var(--color-bloom-line)}.border-bloom-mint\/40{border-color:#00cc6866}@supports (color:color-mix(in lab, red, red)){.border-bloom-mint\/40{border-color:color-mix(in oklab, var(--color-bloom-mint) 40%, transparent)}}.border-bloom-sky\/40{border-color:#3ba6f566}@supports (color:color-mix(in lab, red, red)){.border-bloom-sky\/40{border-color:color-mix(in oklab, var(--color-bloom-sky) 40%, transparent)}}.border-bloom-yellow\/40{border-color:#fccf2866}@supports (color:color-mix(in lab, red, red)){.border-bloom-yellow\/40{border-color:color-mix(in oklab, var(--color-bloom-yellow) 40%, transparent)}}.border-current,.border-current\/10{border-color:currentColor}@supports (color:color-mix(in lab, red, red)){.border-current\/10{border-color:color-mix(in oklab, currentcolor 10%, transparent)}}.border-current\/15{border-color:currentColor}@supports (color:color-mix(in lab, red, red)){.border-current\/15{border-color:color-mix(in oklab, currentcolor 15%, transparent)}}.border-current\/20{border-color:currentColor}@supports (color:color-mix(in lab, red, red)){.border-current\/20{border-color:color-mix(in oklab, currentcolor 20%, transparent)}}.border-current\/25{border-color:currentColor}@supports (color:color-mix(in lab, red, red)){.border-current\/25{border-color:color-mix(in oklab, currentcolor 25%, transparent)}}.border-current\/30{border-color:currentColor}@supports (color:color-mix(in lab, red, red)){.border-current\/30{border-color:color-mix(in oklab, currentcolor 30%, transparent)}}.border-transparent{border-color:#0000}.bg-\[\#fff\]{background-color:#fff}.bg-bloom-canvas{background-color:var(--color-bloom-canvas)}.bg-bloom-canvas\/60{background-color:#fff9}@supports (color:color-mix(in lab, red, red)){.bg-bloom-canvas\/60{background-color:color-mix(in oklab, var(--color-bloom-canvas) 60%, transparent)}}.bg-bloom-coral{background-color:var(--color-bloom-coral)}.bg-bloom-coral\/15{background-color:#ff343826}@supports (color:color-mix(in lab, red, red)){.bg-bloom-coral\/15{background-color:color-mix(in oklab, var(--color-bloom-coral) 15%, transparent)}}.bg-bloom-foreground{background-color:var(--color-bloom-foreground)}.bg-bloom-foreground\/8{background-color:#12121214}@supports (color:color-mix(in lab, red, red)){.bg-bloom-foreground\/8{background-color:color-mix(in oklab, var(--color-bloom-foreground) 8%, transparent)}}.bg-bloom-foreground\/12{background-color:#1212121f}@supports (color:color-mix(in lab, red, red)){.bg-bloom-foreground\/12{background-color:color-mix(in oklab, var(--color-bloom-foreground) 12%, transparent)}}.bg-bloom-foreground\/30{background-color:#1212124d}@supports (color:color-mix(in lab, red, red)){.bg-bloom-foreground\/30{background-color:color-mix(in oklab, var(--color-bloom-foreground) 30%, transparent)}}.bg-bloom-indigo{background-color:var(--color-bloom-indigo)}.bg-bloom-indigo\/15{background-color:#6875f626}@supports (color:color-mix(in lab, red, red)){.bg-bloom-indigo\/15{background-color:color-mix(in oklab, var(--color-bloom-indigo) 15%, transparent)}}.bg-bloom-ink{background-color:var(--color-bloom-ink)}.bg-bloom-mint{background-color:var(--color-bloom-mint)}.bg-bloom-mint\/20{background-color:#00cc6833}@supports (color:color-mix(in lab, red, red)){.bg-bloom-mint\/20{background-color:color-mix(in oklab, var(--color-bloom-mint) 20%, transparent)}}.bg-bloom-sky{background-color:var(--color-bloom-sky)}.bg-bloom-sky\/15{background-color:#3ba6f526}@supports (color:color-mix(in lab, red, red)){.bg-bloom-sky\/15{background-color:color-mix(in oklab, var(--color-bloom-sky) 15%, transparent)}}.bg-bloom-surface{background-color:var(--color-bloom-surface)}.bg-bloom-yellow{background-color:var(--color-bloom-yellow)}.bg-bloom-yellow\/25{background-color:#fccf2840}@supports (color:color-mix(in lab, red, red)){.bg-bloom-yellow\/25{background-color:color-mix(in oklab, var(--color-bloom-yellow) 25%, transparent)}}.bg-current,.bg-current\/5{background-color:currentColor}@supports (color:color-mix(in lab, red, red)){.bg-current\/5{background-color:color-mix(in oklab, currentcolor 5%, transparent)}}.bg-current\/8{background-color:currentColor}@supports (color:color-mix(in lab, red, red)){.bg-current\/8{background-color:color-mix(in oklab, currentcolor 8%, transparent)}}.bg-current\/10{background-color:currentColor}@supports (color:color-mix(in lab, red, red)){.bg-current\/10{background-color:color-mix(in oklab, currentcolor 10%, transparent)}}.bg-current\/20{background-color:currentColor}@supports (color:color-mix(in lab, red, red)){.bg-current\/20{background-color:color-mix(in oklab, currentcolor 20%, transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-transparent{background-color:#0000}.bg-linear-to-b{--tw-gradient-position:to bottom}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-b{--tw-gradient-position:to bottom in oklab}}.bg-linear-to-b{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-r{--tw-gradient-position:to right}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-r{--tw-gradient-position:to right in oklab}}.bg-linear-to-r{background-image:linear-gradient(var(--tw-gradient-stops))}.from-bloom-coral\/10{--tw-gradient-from:#ff34381a}@supports (color:color-mix(in lab, red, red)){.from-bloom-coral\/10{--tw-gradient-from:color-mix(in oklab, var(--color-bloom-coral) 10%, transparent)}}.from-bloom-coral\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-bloom-foreground\/40{--tw-gradient-from:#12121266}@supports (color:color-mix(in lab, red, red)){.from-bloom-foreground\/40{--tw-gradient-from:color-mix(in oklab, var(--color-bloom-foreground) 40%, transparent)}}.from-bloom-foreground\/40{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-bloom-indigo\/10{--tw-gradient-from:#6875f61a}@supports (color:color-mix(in lab, red, red)){.from-bloom-indigo\/10{--tw-gradient-from:color-mix(in oklab, var(--color-bloom-indigo) 10%, transparent)}}.from-bloom-indigo\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-bloom-mint\/10{--tw-gradient-from:#00cc681a}@supports (color:color-mix(in lab, red, red)){.from-bloom-mint\/10{--tw-gradient-from:color-mix(in oklab, var(--color-bloom-mint) 10%, transparent)}}.from-bloom-mint\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-bloom-sky\/10{--tw-gradient-from:#3ba6f51a}@supports (color:color-mix(in lab, red, red)){.from-bloom-sky\/10{--tw-gradient-from:color-mix(in oklab, var(--color-bloom-sky) 10%, transparent)}}.from-bloom-sky\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-bloom-yellow\/10{--tw-gradient-from:#fccf281a}@supports (color:color-mix(in lab, red, red)){.from-bloom-yellow\/10{--tw-gradient-from:color-mix(in oklab, var(--color-bloom-yellow) 10%, transparent)}}.from-bloom-yellow\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-bloom-foreground{--tw-gradient-via:var(--color-bloom-foreground);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-bloom-coral\/10{--tw-gradient-to:#ff34381a}@supports (color:color-mix(in lab, red, red)){.to-bloom-coral\/10{--tw-gradient-to:color-mix(in oklab, var(--color-bloom-coral) 10%, transparent)}}.to-bloom-coral\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-bloom-foreground\/40{--tw-gradient-to:#12121266}@supports (color:color-mix(in lab, red, red)){.to-bloom-foreground\/40{--tw-gradient-to:color-mix(in oklab, var(--color-bloom-foreground) 40%, transparent)}}.to-bloom-foreground\/40{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-bloom-indigo\/10{--tw-gradient-to:#6875f61a}@supports (color:color-mix(in lab, red, red)){.to-bloom-indigo\/10{--tw-gradient-to:color-mix(in oklab, var(--color-bloom-indigo) 10%, transparent)}}.to-bloom-indigo\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-bloom-mint\/10{--tw-gradient-to:#00cc681a}@supports (color:color-mix(in lab, red, red)){.to-bloom-mint\/10{--tw-gradient-to:color-mix(in oklab, var(--color-bloom-mint) 10%, transparent)}}.to-bloom-mint\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-bloom-sky\/10{--tw-gradient-to:#3ba6f51a}@supports (color:color-mix(in lab, red, red)){.to-bloom-sky\/10{--tw-gradient-to:color-mix(in oklab, var(--color-bloom-sky) 10%, transparent)}}.to-bloom-sky\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-bloom-yellow\/10{--tw-gradient-to:#fccf281a}@supports (color:color-mix(in lab, red, red)){.to-bloom-yellow\/10{--tw-gradient-to:color-mix(in oklab, var(--color-bloom-yellow) 10%, transparent)}}.to-bloom-yellow\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.bg-size-\[200\%_100\%\]{background-size:200% 100%}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.object-cover{object-fit:cover}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-1{padding-inline:var(--spacing)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-10{padding-block:calc(var(--spacing) * 10)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-\[max\(2rem\,env\(safe-area-inset-top\)\)\]{padding-top:max(2rem, env(safe-area-inset-top))}.pr-1{padding-right:var(--spacing)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-9{padding-right:calc(var(--spacing) * 9)}.pb-1{padding-bottom:var(--spacing)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-9{padding-bottom:calc(var(--spacing) * 9)}.pb-\[max\(1rem\,env\(safe-area-inset-bottom\)\)\]{padding-bottom:max(1rem, env(safe-area-inset-bottom))}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-left{text-align:left}.font-bloom-display{font-family:var(--font-bloom-display)}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-2xl\/8{font-size:var(--text-2xl);line-height:calc(var(--spacing) * 8)}.text-3xl\/9{font-size:var(--text-3xl);line-height:calc(var(--spacing) * 9)}.text-5xl\/none{font-size:var(--text-5xl);line-height:1}.text-base\/6{font-size:var(--text-base);line-height:calc(var(--spacing) * 6)}.text-base\/7{font-size:var(--text-base);line-height:calc(var(--spacing) * 7)}.text-lg\/7{font-size:var(--text-lg);line-height:calc(var(--spacing) * 7)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-sm\/5{font-size:var(--text-sm);line-height:calc(var(--spacing) * 5)}.text-sm\/6{font-size:var(--text-sm);line-height:calc(var(--spacing) * 6)}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-xs\/5{font-size:var(--text-xs);line-height:calc(var(--spacing) * 5)}.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)}.text-pretty{text-wrap:pretty}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.text-\[oklch\(\.\.\.\)\]{color:oklch(...)}.text-bloom-accent{color:var(--color-bloom-accent)}.text-bloom-canvas{color:var(--color-bloom-canvas)}.text-bloom-coral{color:var(--color-bloom-coral)}.text-bloom-foreground{color:var(--color-bloom-foreground)}.text-bloom-ink{color:var(--color-bloom-ink)}.text-bloom-paper{color:var(--color-bloom-paper)}.text-current\/60{color:currentColor}@supports (color:color-mix(in lab, red, red)){.text-current\/60{color:color-mix(in oklab, currentcolor 60%, transparent)}}.text-inherit{color:inherit}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.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}.decoration-current\/40{text-decoration-color:currentColor}@supports (color:color-mix(in lab, red, red)){.decoration-current\/40{-webkit-text-decoration-color:color-mix(in oklab, currentcolor 40%, transparent);-webkit-text-decoration-color:color-mix(in oklab, currentcolor 40%, transparent);text-decoration-color:color-mix(in oklab, currentcolor 40%, transparent)}}.underline-offset-4{text-underline-offset:4px}.scheme-light{color-scheme:light}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);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}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.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))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[-webkit-tap-highlight-color\:transparent\]{-webkit-tap-highlight-color:transparent}.group-data-\[from\=user\]\:border:is(:where(.group)[data-from=user] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[from\=user\]\:border-current\/15:is(:where(.group)[data-from=user] *){border-color:currentColor}@supports (color:color-mix(in lab, red, red)){.group-data-\[from\=user\]\:border-current\/15:is(:where(.group)[data-from=user] *){border-color:color-mix(in oklab, currentcolor 15%, transparent)}}.group-data-\[from\=user\]\:bg-transparent:is(:where(.group)[data-from=user] *){background-color:#0000}.group-data-\[state\=indeterminate\]\:block:is(:where(.group)[data-state=indeterminate] *){display:block}.group-data-\[state\=indeterminate\]\:hidden:is(:where(.group)[data-state=indeterminate] *){display:none}.group-data-\[state\=open\]\:rotate-180:is(:where(.group)[data-state=open] *){rotate:180deg}.group-data-\[status\=complete\]\:bg-bloom-mint:is(:where(.group)[data-status=complete] *){background-color:var(--color-bloom-mint)}.group-data-\[status\=complete\]\:text-bloom-ink:is(:where(.group)[data-status=complete] *){color:var(--color-bloom-ink)}.group-data-\[status\=current\]\:bg-transparent:is(:where(.group)[data-status=current] *){background-color:#0000}.group-data-\[status\=current\]\:ring-1:is(:where(.group)[data-status=current] *){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.group-data-\[status\=current\]\:ring-current:is(:where(.group)[data-status=current] *){--tw-ring-color:currentcolor}.marker\:opacity-50 ::marker{opacity:.5}.marker\:opacity-50::marker{opacity:.5}.marker\:opacity-50 ::-webkit-details-marker{opacity:.5}.marker\:opacity-50::-webkit-details-marker{opacity:.5}.placeholder\:text-current\/40::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-current\/40::placeholder{color:color-mix(in oklab, currentcolor 40%, transparent)}}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:inset-0:after{content:var(--tw-content);inset:0}.after\:-z-10:after{content:var(--tw-content);z-index:calc(10 * -1)}.after\:rounded-\[inherit\]:after{content:var(--tw-content);border-radius:inherit}.after\:transition-colors:after{content:var(--tw-content);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))}.first\:border-l:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.last\:border-r-0:last-child{border-right-style:var(--tw-border-style);border-right-width:0}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\:bg-current\/5:hover{background-color:currentColor}@supports (color:color-mix(in lab, red, red)){.hover\:bg-current\/5:hover{background-color:color-mix(in oklab, currentcolor 5%, transparent)}}.hover\:bg-current\/15:hover{background-color:currentColor}@supports (color:color-mix(in lab, red, red)){.hover\:bg-current\/15:hover{background-color:color-mix(in oklab, currentcolor 15%, transparent)}}.hover\:bg-current\/40:hover{background-color:currentColor}@supports (color:color-mix(in lab, red, red)){.hover\:bg-current\/40:hover{background-color:color-mix(in oklab, currentcolor 40%, transparent)}}.hover\:decoration-current:hover{text-decoration-color:currentColor}.hover\:opacity-100:hover{opacity:1}.hover\:after\:bg-current\/10:hover:after{content:var(--tw-content);background-color:currentColor}@supports (color:color-mix(in lab, red, red)){.hover\:after\:bg-current\/10:hover:after{background-color:color-mix(in oklab, currentcolor 10%, transparent)}}}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-offset-4:focus-visible{outline-offset:4px}.focus-visible\:outline-bloom-sky:focus-visible{outline-color:var(--color-bloom-sky)}.active\:after\:bg-current\/15:active:after{content:var(--tw-content);background-color:currentColor}@supports (color:color-mix(in lab, red, red)){.active\:after\:bg-current\/15:active:after{background-color:color-mix(in oklab, currentcolor 15%, transparent)}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-100:disabled{opacity:1}.has-disabled\:opacity-50:has(:disabled){opacity:.5}.aria-busy\:pointer-events-none[aria-busy=true],.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-bloom-coral[aria-invalid=true]{border-color:var(--color-bloom-coral)}.aria-invalid\:text-bloom-coral[aria-invalid=true]{color:var(--color-bloom-coral)}.aria-\[current\=page\]\:border-bloom-line[aria-current=page]{border-color:var(--color-bloom-line)}.aria-\[current\=page\]\:bg-bloom-foreground\/4[aria-current=page]{background-color:#1212120a}@supports (color:color-mix(in lab, red, red)){.aria-\[current\=page\]\:bg-bloom-foreground\/4[aria-current=page]{background-color:color-mix(in oklab, var(--color-bloom-foreground) 4%, transparent)}}.data-disabled\:pointer-events-none[data-disabled]{pointer-events:none}.data-disabled\:opacity-50[data-disabled]{opacity:.5}.data-dragging\:border-current\/60[data-dragging]{border-color:currentColor}@supports (color:color-mix(in lab, red, red)){.data-dragging\:border-current\/60[data-dragging]{border-color:color-mix(in oklab, currentcolor 60%, transparent)}}.data-dragging\:bg-current\/5[data-dragging]{background-color:currentColor}@supports (color:color-mix(in lab, red, red)){.data-dragging\:bg-current\/5[data-dragging]{background-color:color-mix(in oklab, currentcolor 5%, transparent)}}.data-placeholder\:opacity-60[data-placeholder]{opacity:.6}.data-\[active\=false\]\:hidden[data-active=false]{display:none}.data-\[active\=true\]\:pb-5[data-active=true]{padding-bottom:calc(var(--spacing) * 5)}.data-\[checked\=true\]\:font-medium[data-checked=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[from\=user\]\:justify-end[data-from=user]{justify-content:flex-end}.data-\[highlighted\]\:bg-bloom-foreground\/8[data-highlighted]{background-color:#12121214}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-bloom-foreground\/8[data-highlighted]{background-color:color-mix(in oklab, var(--color-bloom-foreground) 8%, transparent)}}.data-\[orientation\=horizontal\]\:h-2\.5[data-orientation=horizontal]{height:calc(var(--spacing) * 2.5)}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=horizontal\]\:flex-col[data-orientation=horizontal]{flex-direction:column}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-2\.5[data-orientation=vertical]{width:calc(var(--spacing) * 2.5)}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[outside\=true\]\:opacity-30[data-outside=true]{opacity:.3}.data-\[placeholder\=true\]\:opacity-50[data-placeholder=true]{opacity:.5}.data-\[selected\=true\]\:after\:bg-current\/8[data-selected=true]:after{content:var(--tw-content);background-color:currentColor}@supports (color:color-mix(in lab, red, red)){.data-\[selected\=true\]\:after\:bg-current\/8[data-selected=true]:after{background-color:color-mix(in oklab, currentcolor 8%, transparent)}}.data-\[state\=active\]\:bg-bloom-canvas[data-state=active]{background-color:var(--color-bloom-canvas)}.data-\[state\=checked\]\:translate-x-5[data-state=checked]{--tw-translate-x:calc(var(--spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:bg-current[data-state=checked],.data-\[state\=checked\]\:bg-current\/10[data-state=checked]{background-color:currentColor}@supports (color:color-mix(in lab, red, red)){.data-\[state\=checked\]\:bg-current\/10[data-state=checked]{background-color:color-mix(in oklab, currentcolor 10%, transparent)}}.data-\[state\=hidden\]\:opacity-0[data-state=hidden]{opacity:0}.data-\[state\=inactive\]\:text-current\/60[data-state=inactive]{color:currentColor}@supports (color:color-mix(in lab, red, red)){.data-\[state\=inactive\]\:text-current\/60[data-state=inactive]{color:color-mix(in oklab, currentcolor 60%, transparent)}}.data-\[state\=indeterminate\]\:bg-current\/10[data-state=indeterminate]{background-color:currentColor}@supports (color:color-mix(in lab, red, red)){.data-\[state\=indeterminate\]\:bg-current\/10[data-state=indeterminate]{background-color:color-mix(in oklab, currentcolor 10%, transparent)}}.data-\[state\=off\]\:text-current\/60[data-state=off]{color:currentColor}@supports (color:color-mix(in lab, red, red)){.data-\[state\=off\]\:text-current\/60[data-state=off]{color:color-mix(in oklab, currentcolor 60%, transparent)}}.data-\[state\=on\]\:bg-bloom-canvas[data-state=on]{background-color:var(--color-bloom-canvas)}.data-\[state\=selected\]\:bg-current\/5[data-state=selected]{background-color:currentColor}@supports (color:color-mix(in lab, red, red)){.data-\[state\=selected\]\:bg-current\/5[data-state=selected]{background-color:color-mix(in oklab, currentcolor 5%, transparent)}}.data-\[state\=visible\]\:opacity-100[data-state=visible]{opacity:1}.data-\[status\=upcoming\]\:opacity-60[data-status=upcoming]{opacity:.6}@media (prefers-reduced-motion:reduce){.motion-reduce\:animate-none{animation:none}}@media (min-width:40rem){.sm\:grid-cols-\[minmax\(8rem\,1fr\)_3fr\]{grid-template-columns:minmax(8rem,1fr) 3fr}.sm\:flex-row{flex-direction:row}.sm\:gap-6{gap:calc(var(--spacing) * 6)}.sm\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.sm\:border-current\/10{border-color:currentColor}@supports (color:color-mix(in lab, red, red)){.sm\:border-current\/10{border-color:color-mix(in oklab, currentcolor 10%, transparent)}}.sm\:py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.sm\:py-3{padding-block:calc(var(--spacing) * 3)}.sm\:text-sm\/6{font-size:var(--text-sm);line-height:calc(var(--spacing) * 6)}.sm\:focus-within\:outline-2:focus-within{outline-style:var(--tw-outline-style);outline-width:2px}.sm\:focus-within\:outline-bloom-sky:focus-within{outline-color:var(--color-bloom-sky)}}@media (min-width:48rem){.md\:inset-x-4{inset-inline:calc(var(--spacing) * 4)}.md\:inset-y-4{inset-block:calc(var(--spacing) * 4)}.md\:top-4{top:calc(var(--spacing) * 4)}.md\:right-4{right:calc(var(--spacing) * 4)}.md\:bottom-4{bottom:calc(var(--spacing) * 4)}.md\:left-4{left:calc(var(--spacing) * 4)}.md\:w-\(--radix-navigation-menu-viewport-width\){width:var(--radix-navigation-menu-viewport-width)}.md\:w-96{width:calc(var(--spacing) * 96)}}@media (min-width:64rem){.lg\:p-10{padding:calc(var(--spacing) * 10)}}.dark\:border-bloom-line-dark:where(.dark,.dark *){border-color:var(--color-bloom-line-dark)}@media (prefers-color-scheme:dark){.dark\:border-bloom-line-dark:where(:not(.light,.light *)){border-color:var(--color-bloom-line-dark)}}.dark\:bg-bloom-canvas-dark:where(.dark,.dark *){background-color:var(--color-bloom-canvas-dark)}@media (prefers-color-scheme:dark){.dark\:bg-bloom-canvas-dark:where(:not(.light,.light *)){background-color:var(--color-bloom-canvas-dark)}}.dark\:bg-bloom-canvas-dark\/80:where(.dark,.dark *){background-color:#0d0d0dcc}@supports (color:color-mix(in lab, red, red)){.dark\:bg-bloom-canvas-dark\/80:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-bloom-canvas-dark) 80%, transparent)}}@media (prefers-color-scheme:dark){.dark\:bg-bloom-canvas-dark\/80:where(:not(.light,.light *)){background-color:#0d0d0dcc}@supports (color:color-mix(in lab, red, red)){.dark\:bg-bloom-canvas-dark\/80:where(:not(.light,.light *)){background-color:color-mix(in oklab, var(--color-bloom-canvas-dark) 80%, transparent)}}}.dark\:bg-bloom-foreground-dark:where(.dark,.dark *){background-color:var(--color-bloom-foreground-dark)}@media (prefers-color-scheme:dark){.dark\:bg-bloom-foreground-dark:where(:not(.light,.light *)){background-color:var(--color-bloom-foreground-dark)}}.dark\:bg-bloom-foreground-dark\/8:where(.dark,.dark *){background-color:#fafafa14}@supports (color:color-mix(in lab, red, red)){.dark\:bg-bloom-foreground-dark\/8:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-bloom-foreground-dark) 8%, transparent)}}@media (prefers-color-scheme:dark){.dark\:bg-bloom-foreground-dark\/8:where(:not(.light,.light *)){background-color:#fafafa14}@supports (color:color-mix(in lab, red, red)){.dark\:bg-bloom-foreground-dark\/8:where(:not(.light,.light *)){background-color:color-mix(in oklab, var(--color-bloom-foreground-dark) 8%, transparent)}}}.dark\:bg-bloom-foreground-dark\/10:where(.dark,.dark *){background-color:#fafafa1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-bloom-foreground-dark\/10:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-bloom-foreground-dark) 10%, transparent)}}@media (prefers-color-scheme:dark){.dark\:bg-bloom-foreground-dark\/10:where(:not(.light,.light *)){background-color:#fafafa1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-bloom-foreground-dark\/10:where(:not(.light,.light *)){background-color:color-mix(in oklab, var(--color-bloom-foreground-dark) 10%, transparent)}}}.dark\:bg-bloom-foreground-dark\/30:where(.dark,.dark *){background-color:#fafafa4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-bloom-foreground-dark\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-bloom-foreground-dark) 30%, transparent)}}@media (prefers-color-scheme:dark){.dark\:bg-bloom-foreground-dark\/30:where(:not(.light,.light *)){background-color:#fafafa4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-bloom-foreground-dark\/30:where(:not(.light,.light *)){background-color:color-mix(in oklab, var(--color-bloom-foreground-dark) 30%, transparent)}}}.dark\:bg-bloom-foreground-dark\/40:where(.dark,.dark *){background-color:#fafafa66}@supports (color:color-mix(in lab, red, red)){.dark\:bg-bloom-foreground-dark\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-bloom-foreground-dark) 40%, transparent)}}@media (prefers-color-scheme:dark){.dark\:bg-bloom-foreground-dark\/40:where(:not(.light,.light *)){background-color:#fafafa66}@supports (color:color-mix(in lab, red, red)){.dark\:bg-bloom-foreground-dark\/40:where(:not(.light,.light *)){background-color:color-mix(in oklab, var(--color-bloom-foreground-dark) 40%, transparent)}}}.dark\:bg-bloom-mint\/15:where(.dark,.dark *){background-color:#00cc6826}@supports (color:color-mix(in lab, red, red)){.dark\:bg-bloom-mint\/15:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-bloom-mint) 15%, transparent)}}@media (prefers-color-scheme:dark){.dark\:bg-bloom-mint\/15:where(:not(.light,.light *)){background-color:#00cc6826}@supports (color:color-mix(in lab, red, red)){.dark\:bg-bloom-mint\/15:where(:not(.light,.light *)){background-color:color-mix(in oklab, var(--color-bloom-mint) 15%, transparent)}}}.dark\:bg-bloom-surface-dark:where(.dark,.dark *){background-color:var(--color-bloom-surface-dark)}@media (prefers-color-scheme:dark){.dark\:bg-bloom-surface-dark:where(:not(.light,.light *)){background-color:var(--color-bloom-surface-dark)}}.dark\:bg-bloom-yellow\/15:where(.dark,.dark *){background-color:#fccf2826}@supports (color:color-mix(in lab, red, red)){.dark\:bg-bloom-yellow\/15:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-bloom-yellow) 15%, transparent)}}@media (prefers-color-scheme:dark){.dark\:bg-bloom-yellow\/15:where(:not(.light,.light *)){background-color:#fccf2826}@supports (color:color-mix(in lab, red, red)){.dark\:bg-bloom-yellow\/15:where(:not(.light,.light *)){background-color:color-mix(in oklab, var(--color-bloom-yellow) 15%, transparent)}}}.dark\:from-bloom-foreground-dark\/40:where(.dark,.dark *){--tw-gradient-from:#fafafa66}@supports (color:color-mix(in lab, red, red)){.dark\:from-bloom-foreground-dark\/40:where(.dark,.dark *){--tw-gradient-from:color-mix(in oklab, var(--color-bloom-foreground-dark) 40%, transparent)}}.dark\:from-bloom-foreground-dark\/40:where(.dark,.dark *){--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}@media (prefers-color-scheme:dark){.dark\:from-bloom-foreground-dark\/40:where(:not(.light,.light *)){--tw-gradient-from:#fafafa66}@supports (color:color-mix(in lab, red, red)){.dark\:from-bloom-foreground-dark\/40:where(:not(.light,.light *)){--tw-gradient-from:color-mix(in oklab, var(--color-bloom-foreground-dark) 40%, transparent)}}.dark\:from-bloom-foreground-dark\/40:where(:not(.light,.light *)){--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}}.dark\:via-bloom-foreground-dark:where(.dark,.dark *){--tw-gradient-via:var(--color-bloom-foreground-dark);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}@media (prefers-color-scheme:dark){.dark\:via-bloom-foreground-dark:where(:not(.light,.light *)){--tw-gradient-via:var(--color-bloom-foreground-dark);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}}.dark\:to-bloom-foreground-dark\/40:where(.dark,.dark *){--tw-gradient-to:#fafafa66}@supports (color:color-mix(in lab, red, red)){.dark\:to-bloom-foreground-dark\/40:where(.dark,.dark *){--tw-gradient-to:color-mix(in oklab, var(--color-bloom-foreground-dark) 40%, transparent)}}.dark\:to-bloom-foreground-dark\/40:where(.dark,.dark *){--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}@media (prefers-color-scheme:dark){.dark\:to-bloom-foreground-dark\/40:where(:not(.light,.light *)){--tw-gradient-to:#fafafa66}@supports (color:color-mix(in lab, red, red)){.dark\:to-bloom-foreground-dark\/40:where(:not(.light,.light *)){--tw-gradient-to:color-mix(in oklab, var(--color-bloom-foreground-dark) 40%, transparent)}}.dark\:to-bloom-foreground-dark\/40:where(:not(.light,.light *)){--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}}.dark\:text-bloom-accent-dark:where(.dark,.dark *){color:var(--color-bloom-accent-dark)}@media (prefers-color-scheme:dark){.dark\:text-bloom-accent-dark:where(:not(.light,.light *)){color:var(--color-bloom-accent-dark)}}.dark\:text-bloom-canvas-dark:where(.dark,.dark *){color:var(--color-bloom-canvas-dark)}@media (prefers-color-scheme:dark){.dark\:text-bloom-canvas-dark:where(:not(.light,.light *)){color:var(--color-bloom-canvas-dark)}}.dark\:text-bloom-coral:where(.dark,.dark *){color:var(--color-bloom-coral)}@media (prefers-color-scheme:dark){.dark\:text-bloom-coral:where(:not(.light,.light *)){color:var(--color-bloom-coral)}}.dark\:text-bloom-foreground-dark:where(.dark,.dark *){color:var(--color-bloom-foreground-dark)}@media (prefers-color-scheme:dark){.dark\:text-bloom-foreground-dark:where(:not(.light,.light *)){color:var(--color-bloom-foreground-dark)}}.dark\:text-bloom-indigo:where(.dark,.dark *){color:var(--color-bloom-indigo)}@media (prefers-color-scheme:dark){.dark\:text-bloom-indigo:where(:not(.light,.light *)){color:var(--color-bloom-indigo)}}.dark\:text-bloom-mint:where(.dark,.dark *){color:var(--color-bloom-mint)}@media (prefers-color-scheme:dark){.dark\:text-bloom-mint:where(:not(.light,.light *)){color:var(--color-bloom-mint)}}.dark\:text-bloom-sky:where(.dark,.dark *){color:var(--color-bloom-sky)}@media (prefers-color-scheme:dark){.dark\:text-bloom-sky:where(:not(.light,.light *)){color:var(--color-bloom-sky)}}.dark\:text-bloom-yellow:where(.dark,.dark *){color:var(--color-bloom-yellow)}@media (prefers-color-scheme:dark){.dark\:text-bloom-yellow:where(:not(.light,.light *)){color:var(--color-bloom-yellow)}}.dark\:scheme-dark:where(.dark,.dark *){color-scheme:dark}@media (prefers-color-scheme:dark){.dark\:scheme-dark:where(:not(.light,.light *)){color-scheme:dark}}.dark\:aria-\[current\=page\]\:border-bloom-line-dark:where(.dark,.dark *)[aria-current=page]{border-color:var(--color-bloom-line-dark)}@media (prefers-color-scheme:dark){.dark\:aria-\[current\=page\]\:border-bloom-line-dark:where(:not(.light,.light *))[aria-current=page]{border-color:var(--color-bloom-line-dark)}}.dark\:aria-\[current\=page\]\:bg-bloom-foreground-dark\/4:where(.dark,.dark *)[aria-current=page]{background-color:#fafafa0a}@supports (color:color-mix(in lab, red, red)){.dark\:aria-\[current\=page\]\:bg-bloom-foreground-dark\/4:where(.dark,.dark *)[aria-current=page]{background-color:color-mix(in oklab, var(--color-bloom-foreground-dark) 4%, transparent)}}@media (prefers-color-scheme:dark){.dark\:aria-\[current\=page\]\:bg-bloom-foreground-dark\/4:where(:not(.light,.light *))[aria-current=page]{background-color:#fafafa0a}@supports (color:color-mix(in lab, red, red)){.dark\:aria-\[current\=page\]\:bg-bloom-foreground-dark\/4:where(:not(.light,.light *))[aria-current=page]{background-color:color-mix(in oklab, var(--color-bloom-foreground-dark) 4%, transparent)}}}.dark\:data-\[highlighted\]\:bg-bloom-foreground-dark\/8:where(.dark,.dark *)[data-highlighted]{background-color:#fafafa14}@supports (color:color-mix(in lab, red, red)){.dark\:data-\[highlighted\]\:bg-bloom-foreground-dark\/8:where(.dark,.dark *)[data-highlighted]{background-color:color-mix(in oklab, var(--color-bloom-foreground-dark) 8%, transparent)}}@media (prefers-color-scheme:dark){.dark\:data-\[highlighted\]\:bg-bloom-foreground-dark\/8:where(:not(.light,.light *))[data-highlighted]{background-color:#fafafa14}@supports (color:color-mix(in lab, red, red)){.dark\:data-\[highlighted\]\:bg-bloom-foreground-dark\/8:where(:not(.light,.light *))[data-highlighted]{background-color:color-mix(in oklab, var(--color-bloom-foreground-dark) 8%, transparent)}}}.dark\:data-\[state\=active\]\:bg-bloom-canvas-dark:where(.dark,.dark *)[data-state=active]{background-color:var(--color-bloom-canvas-dark)}@media (prefers-color-scheme:dark){.dark\:data-\[state\=active\]\:bg-bloom-canvas-dark:where(:not(.light,.light *))[data-state=active]{background-color:var(--color-bloom-canvas-dark)}}.dark\:data-\[state\=on\]\:bg-bloom-canvas-dark:where(.dark,.dark *)[data-state=on]{background-color:var(--color-bloom-canvas-dark)}@media (prefers-color-scheme:dark){.dark\:data-\[state\=on\]\:bg-bloom-canvas-dark:where(:not(.light,.light *))[data-state=on]{background-color:var(--color-bloom-canvas-dark)}}@media (forced-colors:active){.forced-colors\:outline-\[Highlight\]{outline-color:highlight}}@media (pointer:fine){.pointer-fine\:hidden{display:none}}.\[\&_code\]\:bg-transparent code{background-color:#0000}.\[\&_code\]\:p-0 code{padding:0}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:px-2 *)[cmdk-group-heading]{padding-inline:calc(var(--spacing) * 2)}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:pt-2 *)[cmdk-group-heading]{padding-top:calc(var(--spacing) * 2)}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:pb-1 *)[cmdk-group-heading]{padding-bottom:var(--spacing)}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:font-mono *)[cmdk-group-heading]{font-family:var(--font-mono)}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:text-xs *)[cmdk-group-heading]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:opacity-60 *)[cmdk-group-heading]{opacity:.6}.\[\&\>\:first-child\]\:mt-0>:first-child{margin-top:0}.\[\&\>\:last-child\]\:mb-0>:last-child{margin-bottom:0}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:size-5>svg{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.\[\&\>svg\]\:size-6>svg{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.\[\&\>svg\]\:size-8>svg{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}@media (min-width:40rem){.sm\:\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}}.\[\&\>tr\:last-child\]\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}}@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-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@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-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes bloom-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}
@@ -0,0 +1,7 @@
1
+ import { ComponentPropsWithRef } from "react";
2
+ import * as Nude from "@journ/nude/switch-parts";
3
+ //#region src/switch-parts.d.ts
4
+ declare const Root: ({ className, children, ...props }: ComponentPropsWithRef<typeof Nude.Root>) => import("react").JSX.Element;
5
+ declare const Thumb: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Thumb>) => import("react").JSX.Element;
6
+ //#endregion
7
+ export { Root, Thumb };
@@ -0,0 +1,19 @@
1
+ "use client";
2
+ import { cn } from "./lib/cn.js";
3
+ import { pressReset } from "./lib/interactive.js";
4
+ import { canvasFill, trackFill } from "./lib/theme.js";
5
+ import { TouchTarget } from "./touch-target.js";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import * as Nude from "@journ/nude/switch-parts";
8
+ //#region src/switch-parts.tsx
9
+ const Root = ({ className, children, ...props }) => /* @__PURE__ */ jsxs(Nude.Root, {
10
+ ...props,
11
+ className: cn(pressReset, trackFill, "relative inline-flex h-6 w-11 shrink-0 cursor-default items-center rounded-full p-0.5 outline-none transition-colors", "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-bloom-sky", "data-[state=checked]:bg-current disabled:pointer-events-none disabled:opacity-50", className),
12
+ children: [/* @__PURE__ */ jsx(TouchTarget, {}), children]
13
+ });
14
+ const Thumb = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Thumb, {
15
+ ...props,
16
+ className: cn(canvasFill, "pointer-events-none block size-5 rounded-full transition-transform data-[state=checked]:translate-x-5", className)
17
+ });
18
+ //#endregion
19
+ export { Root, Thumb };
@@ -0,0 +1,8 @@
1
+ import { Root, Thumb } from "./switch-parts.js";
2
+ //#region src/switch.d.ts
3
+ declare const Switch: {
4
+ Root: typeof Root;
5
+ Thumb: typeof Thumb;
6
+ };
7
+ //#endregion
8
+ export { Switch };
package/dist/switch.js ADDED
@@ -0,0 +1,8 @@
1
+ import { Root, Thumb } from "./switch-parts.js";
2
+ //#region src/switch.tsx
3
+ const Switch = {
4
+ Root,
5
+ Thumb
6
+ };
7
+ //#endregion
8
+ export { Switch };