@uoguelph/react-components 1.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/README.md +3 -0
  2. package/dist/accordion-button.d.ts +16 -0
  3. package/dist/accordion-button.js +42 -0
  4. package/dist/accordion-content.d.ts +15 -0
  5. package/dist/accordion-content.js +14 -0
  6. package/dist/accordion-context.d.ts +9 -0
  7. package/dist/accordion-context.js +5 -0
  8. package/dist/accordion.d.ts +42 -0
  9. package/dist/accordion.js +16 -0
  10. package/dist/alert-footer.d.ts +16 -0
  11. package/dist/alert-footer.js +10 -0
  12. package/dist/alert-message.d.ts +16 -0
  13. package/dist/alert-message.js +13 -0
  14. package/dist/alert-subtitle.d.ts +16 -0
  15. package/dist/alert-subtitle.js +10 -0
  16. package/dist/alert-title.d.ts +22 -0
  17. package/dist/alert-title.js +50 -0
  18. package/dist/alert.d.ts +70 -0
  19. package/dist/alert.js +18 -0
  20. package/dist/blockquote.d.ts +22 -0
  21. package/dist/blockquote.js +43 -0
  22. package/dist/breadcrumb-home.d.ts +32 -0
  23. package/dist/breadcrumb-home.js +21 -0
  24. package/dist/breadcrumb.d.ts +32 -0
  25. package/dist/breadcrumb.js +30 -0
  26. package/dist/breadcrumbs.d.ts +54 -0
  27. package/dist/breadcrumbs.js +15 -0
  28. package/dist/button.d.ts +51 -0
  29. package/dist/button.js +218 -0
  30. package/dist/card-content.d.ts +15 -0
  31. package/dist/card-content.js +20 -0
  32. package/dist/card-context.d.ts +10 -0
  33. package/dist/card-context.js +5 -0
  34. package/dist/card-footer.d.ts +16 -0
  35. package/dist/card-footer.js +20 -0
  36. package/dist/card-image.d.ts +40 -0
  37. package/dist/card-image.js +45 -0
  38. package/dist/card-title.d.ts +16 -0
  39. package/dist/card-title.js +20 -0
  40. package/dist/card.d.ts +105 -0
  41. package/dist/card.js +45 -0
  42. package/dist/carousel.d.ts +25 -0
  43. package/dist/carousel.js +113 -0
  44. package/dist/checkbox.d.ts +39 -0
  45. package/dist/checkbox.js +99 -0
  46. package/dist/contact-email.d.ts +17 -0
  47. package/dist/contact-email.js +21 -0
  48. package/dist/contact-name.d.ts +16 -0
  49. package/dist/contact-name.js +10 -0
  50. package/dist/contact-phone.d.ts +19 -0
  51. package/dist/contact-phone.js +25 -0
  52. package/dist/contact-title.d.ts +16 -0
  53. package/dist/contact-title.js +10 -0
  54. package/dist/contact.d.ts +73 -0
  55. package/dist/contact.js +18 -0
  56. package/dist/container.d.ts +32 -0
  57. package/dist/container.js +25 -0
  58. package/dist/divider.d.ts +6 -0
  59. package/dist/divider.js +30 -0
  60. package/dist/embedded-video-context.d.ts +10 -0
  61. package/dist/embedded-video-context.js +5 -0
  62. package/dist/embedded-video-modal-button.d.ts +54 -0
  63. package/dist/embedded-video-modal-button.js +25 -0
  64. package/dist/embedded-video.d.ts +81 -0
  65. package/dist/embedded-video.js +108 -0
  66. package/dist/hero-caption.d.ts +15 -0
  67. package/dist/hero-caption.js +8 -0
  68. package/dist/hero-content.d.ts +20 -0
  69. package/dist/hero-content.js +47 -0
  70. package/dist/hero-context.d.ts +9 -0
  71. package/dist/hero-context.js +5 -0
  72. package/dist/hero-link.d.ts +29 -0
  73. package/dist/hero-link.js +26 -0
  74. package/dist/hero-title.d.ts +24 -0
  75. package/dist/hero-title.js +26 -0
  76. package/dist/hero-video.d.ts +22 -0
  77. package/dist/hero-video.js +27 -0
  78. package/dist/hero.d.ts +141 -0
  79. package/dist/hero.js +52 -0
  80. package/dist/image-overlay.d.ts +66 -0
  81. package/dist/image-overlay.js +144 -0
  82. package/dist/index.css +1 -0
  83. package/dist/index.d.ts +11 -0
  84. package/dist/index.js +33 -0
  85. package/dist/info.d.ts +19 -0
  86. package/dist/info.js +24 -0
  87. package/dist/link-carousel-content.d.ts +11 -0
  88. package/dist/link-carousel-content.js +20 -0
  89. package/dist/link-carousel-context.d.ts +30 -0
  90. package/dist/link-carousel-context.js +5 -0
  91. package/dist/link-carousel-item.d.ts +15 -0
  92. package/dist/link-carousel-item.js +21 -0
  93. package/dist/link-carousel-link.d.ts +34 -0
  94. package/dist/link-carousel-link.js +39 -0
  95. package/dist/link-carousel-links.d.ts +11 -0
  96. package/dist/link-carousel-links.js +24 -0
  97. package/dist/link-carousel.d.ts +83 -0
  98. package/dist/link-carousel.js +57 -0
  99. package/dist/link.d.ts +30 -0
  100. package/dist/link.js +28 -0
  101. package/dist/list-item.d.ts +17 -0
  102. package/dist/list-item.js +9 -0
  103. package/dist/list.d.ts +39 -0
  104. package/dist/list.js +31 -0
  105. package/dist/loading-indicator.d.ts +23 -0
  106. package/dist/loading-indicator.js +75 -0
  107. package/dist/math-utils-BwzyIQRL.js +50 -0
  108. package/dist/media-caption.d.ts +110 -0
  109. package/dist/media-caption.js +129 -0
  110. package/dist/modal.d.ts +18 -0
  111. package/dist/modal.js +39 -0
  112. package/dist/navigation-link.d.ts +29 -0
  113. package/dist/navigation-link.js +40 -0
  114. package/dist/navigation.d.ts +40 -0
  115. package/dist/navigation.js +15 -0
  116. package/dist/radio-context.d.ts +9 -0
  117. package/dist/radio-context.js +5 -0
  118. package/dist/radio-group.d.ts +28 -0
  119. package/dist/radio-group.js +37 -0
  120. package/dist/radio.d.ts +13 -0
  121. package/dist/radio.js +36 -0
  122. package/dist/regular-CYeGUuiO.js +91 -0
  123. package/dist/solid-DM6GVhkF.js +80 -0
  124. package/dist/typography.d.ts +29 -0
  125. package/dist/typography.js +31 -0
  126. package/package.json +76 -0
@@ -0,0 +1,66 @@
1
+ import { ComponentPropsWithoutRef } from 'react';
2
+ import { ElementType } from 'react';
3
+ import { JSX } from 'react/jsx-runtime';
4
+ import { PropsWithChildren } from 'react';
5
+
6
+ declare const defaultElement = "img";
7
+
8
+ /** A component to display content over an image. */
9
+ export declare function ImageOverlay<T extends ImageOverlayElementType = typeof defaultElement>({ as, src, width, height, alt, children, className, verticalAlignment, horizontalAlignment, overlay, blurred, ...rest }: ImageOverlayProps<T>): JSX.Element;
10
+
11
+ export declare namespace ImageOverlay {
12
+ var displayName: string;
13
+ }
14
+
15
+ declare type ImageOverlayElementType = ElementType<{
16
+ src: string;
17
+ alt: string;
18
+ height?: number;
19
+ width?: number;
20
+ className?: string;
21
+ }, 'img'>;
22
+
23
+ export declare type ImageOverlayProps<T extends ImageOverlayElementType = typeof defaultElement> = PropsWithChildren<{
24
+ /**
25
+ * The element type to render as.
26
+ *
27
+ * @default 'img'
28
+ */
29
+ as?: T;
30
+ /** The image source. */
31
+ src: string;
32
+ /** The image alt text. */
33
+ alt: string;
34
+ /** The image width in pixels. */
35
+ width?: number;
36
+ /** The image height in pixels. */
37
+ height?: number;
38
+ /** Additional classes to apply to the image. */
39
+ className?: string;
40
+ /**
41
+ * The vertical alignment of the content in the overlay.
42
+ *
43
+ * @default 'center'
44
+ */
45
+ verticalAlignment: 'top' | 'center' | 'bottom';
46
+ /**
47
+ * The horizontal alignment of the content in the overlay.
48
+ *
49
+ * @default 'center'
50
+ */
51
+ horizontalAlignment: 'left' | 'center' | 'right';
52
+ /**
53
+ * A color overlay to apply to the image.
54
+ *
55
+ * @default 'none'
56
+ */
57
+ overlay: 'dark' | 'light' | 'dark-gradient' | 'light-gradient' | 'none';
58
+ /**
59
+ * Whether the image should be blurred.
60
+ *
61
+ * @default false
62
+ */
63
+ blurred: boolean;
64
+ } & ComponentPropsWithoutRef<T>>;
65
+
66
+ export { }
@@ -0,0 +1,144 @@
1
+ import { jsxs as a, jsx as t } from "react/jsx-runtime";
2
+ import { twMerge as A } from "tailwind-merge";
3
+ import { tv as k } from "tailwind-variants";
4
+ const z = "img";
5
+ function x({
6
+ as: r,
7
+ src: l,
8
+ width: n,
9
+ height: i,
10
+ alt: o,
11
+ children: g,
12
+ className: w,
13
+ verticalAlignment: s = "center",
14
+ horizontalAlignment: c = "center",
15
+ overlay: e = "none",
16
+ blurred: m = !1,
17
+ ...v
18
+ }) {
19
+ const d = r ?? z, f = k({
20
+ slots: {
21
+ base: "tw:min-h-[50rem] tw:relative tw:flex tw:h-fit tw:w-full tw:flex-col",
22
+ imageWrapper: "tw:absolute tw:z-10 tw:h-full tw:w-full",
23
+ image: "tw:h-full tw:w-full tw:object-cover",
24
+ overlay: "tw:absolute tw:top-0 tw:left-0 tw:h-full tw:w-full",
25
+ container: "tw:relative tw:z-20 tw:flex tw:flex-1 tw:flex-col tw:p-0"
26
+ },
27
+ variants: {
28
+ blurred: {
29
+ true: {
30
+ image: "tw:blur-sm"
31
+ }
32
+ },
33
+ overlay: {
34
+ dark: {
35
+ overlay: "tw:bg-black/60"
36
+ },
37
+ light: {
38
+ overlay: "tw:bg-white/60"
39
+ },
40
+ "dark-gradient": {
41
+ overlay: "tw:from-black/50 tw:via-30% tw:via-black/20 tw:to-transparent"
42
+ },
43
+ "light-gradient": {
44
+ overlay: "tw:from-white/50 tw:via-30% tw:via-white/20 tw:to-transparent"
45
+ },
46
+ none: {
47
+ overlay: "tw:hidden"
48
+ }
49
+ },
50
+ verticalAlignment: {
51
+ top: {
52
+ container: "tw:justify-start"
53
+ },
54
+ center: {
55
+ container: "tw:justify-center"
56
+ },
57
+ bottom: {
58
+ container: "tw:justify-end"
59
+ }
60
+ },
61
+ horizontalAlignment: {
62
+ left: {
63
+ container: "tw:items-start"
64
+ },
65
+ center: {
66
+ container: "tw:items-center"
67
+ },
68
+ right: {
69
+ container: "tw:items-end"
70
+ }
71
+ }
72
+ },
73
+ compoundVariants: [
74
+ {
75
+ overlay: ["dark-gradient", "light-gradient"],
76
+ verticalAlignment: "bottom",
77
+ horizontalAlignment: ["left", "center", "right"],
78
+ class: {
79
+ overlay: "tw:bg-gradient-to-t"
80
+ }
81
+ },
82
+ {
83
+ overlay: ["dark-gradient", "light-gradient"],
84
+ verticalAlignment: "top",
85
+ horizontalAlignment: ["left", "center", "right"],
86
+ class: {
87
+ overlay: "tw:bg-gradient-to-b"
88
+ }
89
+ },
90
+ {
91
+ overlay: ["dark-gradient", "light-gradient"],
92
+ verticalAlignment: "center",
93
+ horizontalAlignment: "center",
94
+ class: {
95
+ overlay: "tw:bg-radial"
96
+ }
97
+ },
98
+ {
99
+ overlay: ["dark-gradient", "light-gradient"],
100
+ verticalAlignment: "center",
101
+ horizontalAlignment: "left",
102
+ class: {
103
+ overlay: "tw:bg-gradient-to-r"
104
+ }
105
+ },
106
+ {
107
+ overlay: ["dark-gradient", "light-gradient"],
108
+ verticalAlignment: "center",
109
+ horizontalAlignment: "right",
110
+ class: {
111
+ overlay: "tw:bg-gradient-to-l"
112
+ }
113
+ }
114
+ ]
115
+ }), {
116
+ base: h,
117
+ imageWrapper: y,
118
+ image: b,
119
+ overlay: u,
120
+ container: p
121
+ } = f({ blurred: m, overlay: e, verticalAlignment: s, horizontalAlignment: c });
122
+ return /* @__PURE__ */ a("div", { className: h(), children: [
123
+ /* @__PURE__ */ a("div", { className: y(), children: [
124
+ /* @__PURE__ */ t(
125
+ d,
126
+ {
127
+ ...v,
128
+ className: A(b(), w),
129
+ src: l,
130
+ width: n,
131
+ height: i,
132
+ alt: o,
133
+ sizes: "100vw"
134
+ }
135
+ ),
136
+ e !== "none" && /* @__PURE__ */ t("div", { className: u() })
137
+ ] }),
138
+ /* @__PURE__ */ t("div", { className: p(), children: g })
139
+ ] });
140
+ }
141
+ x.displayName = "ImageOverlay";
142
+ export {
143
+ x as ImageOverlay
144
+ };
package/dist/index.css ADDED
@@ -0,0 +1 @@
1
+ /*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */@layer theme;@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%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,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}body{line-height:inherit}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;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{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;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}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root{--tw-max-content-width:137rem;font-size:62.5%}body{margin:0;padding:0;font-size:1.6rem}}@layer components;@layer utilities{.tw\:pointer-events-none{pointer-events:none}.tw\:invisible{visibility:hidden}.tw\:sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.tw\:absolute{position:absolute}.tw\:fixed{position:fixed}.tw\:relative{position:relative}.tw\:inset-0{inset:calc(var(--tw-spacing,.4rem)*0)}.tw\:top-0{top:calc(var(--tw-spacing,.4rem)*0)}.tw\:top-1\/2{top:50%}.tw\:right-0{right:calc(var(--tw-spacing,.4rem)*0)}.tw\:bottom-0{bottom:calc(var(--tw-spacing,.4rem)*0)}.tw\:left-0{left:calc(var(--tw-spacing,.4rem)*0)}.tw\:left-1\/2{left:50%}.tw\:z-0{z-index:0}.tw\:z-10{z-index:10}.tw\:z-20{z-index:20}.tw\:z-50{z-index:50}.tw\:col-start-1{grid-column-start:1}.tw\:col-start-2{grid-column-start:2}.tw\:row-start-1{grid-row-start:1}.tw\:container{width:100%}@media (width>=40rem){.tw\:container{max-width:40rem}}@media (width>=48rem){.tw\:container{max-width:48rem}}@media (width>=64rem){.tw\:container{max-width:64rem}}@media (width>=80rem){.tw\:container{max-width:80rem}}@media (width>=96rem){.tw\:container{max-width:96rem}}.tw\:mx-auto{margin-inline:auto}.tw\:my-2{margin-block:calc(var(--tw-spacing,.4rem)*2)}.tw\:my-7{margin-block:calc(var(--tw-spacing,.4rem)*7)}.tw\:mt-3\.75{margin-top:calc(var(--tw-spacing,.4rem)*3.75)}.tw\:mt-7\.5{margin-top:calc(var(--tw-spacing,.4rem)*7.5)}.tw\:mr-\[0\.3em\]{margin-right:.3em}.tw\:mr-auto{margin-right:auto}.tw\:mb-0{margin-bottom:calc(var(--tw-spacing,.4rem)*0)}.tw\:mb-1{margin-bottom:calc(var(--tw-spacing,.4rem)*1)}.tw\:mb-2{margin-bottom:calc(var(--tw-spacing,.4rem)*2)}.tw\:mb-3\.75{margin-bottom:calc(var(--tw-spacing,.4rem)*3.75)}.tw\:mb-4{margin-bottom:calc(var(--tw-spacing,.4rem)*4)}.tw\:ml-4{margin-left:calc(var(--tw-spacing,.4rem)*4)}.tw\:ml-\[0\.25em\]{margin-left:.25em}.tw\:ml-auto{margin-left:auto}.tw\:block{display:block}.tw\:contents{display:contents}.tw\:flex{display:flex}.tw\:grid{display:grid}.tw\:hidden{display:none}.tw\:inline-block{display:inline-block}.tw\:inline-flex{display:inline-flex}.tw\:aspect-\[16\/9\]{aspect-ratio:16/9}.tw\:aspect-square{aspect-ratio:1}.tw\:aspect-video{aspect-ratio:var(--tw-aspect-video,16/9)}.tw\:size-4{width:calc(var(--tw-spacing,.4rem)*4);height:calc(var(--tw-spacing,.4rem)*4)}.tw\:h-1{height:calc(var(--tw-spacing,.4rem)*1)}.tw\:h-2{height:calc(var(--tw-spacing,.4rem)*2)}.tw\:h-5{height:calc(var(--tw-spacing,.4rem)*5)}.tw\:h-9{height:calc(var(--tw-spacing,.4rem)*9)}.tw\:h-16{height:calc(var(--tw-spacing,.4rem)*16)}.tw\:h-\[\.75em\]{height:.75em}.tw\:h-\[1\.5em\]{height:1.5em}.tw\:h-\[1em\]{height:1em}.tw\:h-auto{height:auto}.tw\:h-fit{height:fit-content}.tw\:h-full{height:100%}.tw\:max-h-\[80vh\]{max-height:80vh}.tw\:max-h-\[calc\(85vh-14rem\)\]{max-height:calc(85vh - 14rem)}.tw\:min-h-\[7rem\]{min-height:7rem}.tw\:min-h-\[50rem\]{min-height:50rem}.tw\:w-2{width:calc(var(--tw-spacing,.4rem)*2)}.tw\:w-3\/4{width:75%}.tw\:w-5{width:calc(var(--tw-spacing,.4rem)*5)}.tw\:w-16{width:calc(var(--tw-spacing,.4rem)*16)}.tw\:w-24{width:calc(var(--tw-spacing,.4rem)*24)}.tw\:w-\[1em\]{width:1em}.tw\:w-fit{width:fit-content}.tw\:w-full{width:100%}.tw\:w-screen{width:100vw}.tw\:max-w-6xl{max-width:var(--tw-container-6xl,72rem)}.tw\:max-w-\[--tw-max-content-width\]{max-width:--tw-max-content-width}.tw\:flex-1{flex:1}.tw\:-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.tw\:-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.tw\:rotate-90{rotate:90deg}.tw\:animate-fade-in{animation:var(--tw-animate-fade-in,fade .25s ease-in-out 1 normal forwards)}.tw\:animate-spin{animation:var(--tw-animate-spin,spin 1s linear infinite)}.tw\:cursor-not-allowed{cursor:not-allowed}.tw\:cursor-pointer{cursor:pointer}.tw\:list-inside{list-style-position:inside}.tw\:list-decimal{list-style-type:decimal}.tw\:list-disc{list-style-type:disc}.tw\:grid-cols-\[1fr_1fr\]{grid-template-columns:1fr 1fr}.tw\:grid-cols-\[1fr_2fr\]{grid-template-columns:1fr 2fr}.tw\:grid-cols-\[1fr_4fr\]{grid-template-columns:1fr 4fr}.tw\:grid-cols-\[2fr_1fr\]{grid-template-columns:2fr 1fr}.tw\:grid-cols-\[4fr_1fr\]{grid-template-columns:4fr 1fr}.tw\:grid-cols-\[repeat\(var\(--items\)\,calc\(100\%\/var\(--display\)\)\)\]{grid-template-columns:repeat(var(--items),calc(100%/var(--display)))}.tw\:flex-col{flex-direction:column}.tw\:flex-col-reverse{flex-direction:column-reverse}.tw\:flex-row{flex-direction:row}.tw\:flex-row-reverse{flex-direction:row-reverse}.tw\:flex-wrap{flex-wrap:wrap}.tw\:items-center{align-items:center}.tw\:items-end{align-items:flex-end}.tw\:items-start{align-items:flex-start}.tw\:justify-between{justify-content:space-between}.tw\:justify-center{justify-content:center}.tw\:justify-end{justify-content:flex-end}.tw\:justify-start{justify-content:flex-start}.tw\:gap-0\.5{gap:calc(var(--tw-spacing,.4rem)*.5)}.tw\:gap-1{gap:calc(var(--tw-spacing,.4rem)*1)}.tw\:gap-2{gap:calc(var(--tw-spacing,.4rem)*2)}.tw\:gap-4{gap:calc(var(--tw-spacing,.4rem)*4)}.tw\:gap-5{gap:calc(var(--tw-spacing,.4rem)*5)}.tw\:gap-\[1em\]{gap:1em}.tw\:overflow-hidden{overflow:hidden}.tw\:overflow-x-hidden{overflow-x:hidden}.tw\:rounded{border-radius:.25rem}.tw\:rounded-full{border-radius:3.40282e38px}.tw\:rounded-t-sm{border-top-left-radius:var(--tw-radius-sm,.25rem);border-top-right-radius:var(--tw-radius-sm,.25rem)}.tw\:border{border-style:var(--tw-border-style);border-width:1px}.tw\:border-0{border-style:var(--tw-border-style);border-width:0}.tw\:border-2{border-style:var(--tw-border-style);border-width:2px}.tw\:border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.tw\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.tw\:border-b-4{border-bottom-style:var(--tw-border-style);border-bottom-width:4px}.tw\:border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.tw\:border-black{border-color:var(--tw-color-black,#000)}.tw\:border-blue{border-color:var(--tw-color-blue,#187bb4)}.tw\:border-dark-grey{border-color:var(--tw-color-dark-grey,#747676)}.tw\:border-green{border-color:var(--tw-color-green,#318738)}.tw\:border-light-grey{border-color:var(--tw-color-light-grey,#d8d8d8)}.tw\:border-red{border-color:var(--tw-color-red,#e51937)}.tw\:border-white{border-color:var(--tw-color-white,#fff)}.tw\:border-white\/40{border-color:color-mix(in oklab,var(--tw-color-white,#fff)40%,transparent)}.tw\:border-yellow{border-color:var(--tw-color-yellow,#ffc429)}.tw\:border-l-black{border-left-color:var(--tw-color-black,#000)}.tw\:border-l-blue{border-left-color:var(--tw-color-blue,#187bb4)}.tw\:border-l-dark-grey{border-left-color:var(--tw-color-dark-grey,#747676)}.tw\:border-l-green{border-left-color:var(--tw-color-green,#318738)}.tw\:border-l-light-grey{border-left-color:var(--tw-color-light-grey,#d8d8d8)}.tw\:border-l-red{border-left-color:var(--tw-color-red,#e51937)}.tw\:border-l-white{border-left-color:var(--tw-color-white,#fff)}.tw\:border-l-yellow{border-left-color:var(--tw-color-yellow,#ffc429)}.tw\:bg-black{background-color:var(--tw-color-black,#000)}.tw\:bg-black\/30{background-color:color-mix(in oklab,var(--tw-color-black,#000)30%,transparent)}.tw\:bg-black\/40{background-color:color-mix(in oklab,var(--tw-color-black,#000)40%,transparent)}.tw\:bg-black\/60{background-color:color-mix(in oklab,var(--tw-color-black,#000)60%,transparent)}.tw\:bg-blue{background-color:var(--tw-color-blue,#187bb4)}.tw\:bg-dark-grey{background-color:var(--tw-color-dark-grey,#747676)}.tw\:bg-dark-grey-bg{background-color:var(--tw-color-dark-grey-bg,#222)}.tw\:bg-green{background-color:var(--tw-color-green,#318738)}.tw\:bg-light-grey{background-color:var(--tw-color-light-grey,#d8d8d8)}.tw\:bg-light-grey-bg{background-color:var(--tw-color-light-grey-bg,#f5f5f5)}.tw\:bg-red{background-color:var(--tw-color-red,#e51937)}.tw\:bg-transparent{background-color:#0000}.tw\:bg-white{background-color:var(--tw-color-white,#fff)}.tw\:bg-white\/60{background-color:color-mix(in oklab,var(--tw-color-white,#fff)60%,transparent)}.tw\:bg-yellow{background-color:var(--tw-color-yellow,#ffc429)}.tw\:bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.tw\:bg-gradient-to-l{--tw-gradient-position:to left in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.tw\:bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.tw\:bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.tw\:bg-radial{--tw-gradient-position:in oklab;background-image:radial-gradient(var(--tw-gradient-stops))}.tw\:from-black\/50{--tw-gradient-from:color-mix(in oklab,var(--tw-color-black,#000)50%,transparent);--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))}.tw\:from-white\/50{--tw-gradient-from:color-mix(in oklab,var(--tw-color-white,#fff)50%,transparent);--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))}.tw\:via-black\/20{--tw-gradient-via:color-mix(in oklab,var(--tw-color-black,#000)20%,transparent);--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)}.tw\:via-white\/20{--tw-gradient-via:color-mix(in oklab,var(--tw-color-white,#fff)20%,transparent);--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)}.tw\:via-30\%{--tw-gradient-via-position:30%}.tw\:to-transparent{--tw-gradient-to:transparent;--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))}.tw\:fill-black{fill:var(--tw-color-black,#000)}.tw\:object-cover{object-fit:cover}.tw\:p-0{padding:calc(var(--tw-spacing,.4rem)*0)}.tw\:p-1{padding:calc(var(--tw-spacing,.4rem)*1)}.tw\:p-1\.5{padding:calc(var(--tw-spacing,.4rem)*1.5)}.tw\:p-2\.5{padding:calc(var(--tw-spacing,.4rem)*2.5)}.tw\:p-3{padding:calc(var(--tw-spacing,.4rem)*3)}.tw\:p-4{padding:calc(var(--tw-spacing,.4rem)*4)}.tw\:p-5{padding:calc(var(--tw-spacing,.4rem)*5)}.tw\:p-6{padding:calc(var(--tw-spacing,.4rem)*6)}.tw\:p-7{padding:calc(var(--tw-spacing,.4rem)*7)}.tw\:px-0{padding-inline:calc(var(--tw-spacing,.4rem)*0)}.tw\:px-4{padding-inline:calc(var(--tw-spacing,.4rem)*4)}.tw\:px-5{padding-inline:calc(var(--tw-spacing,.4rem)*5)}.tw\:px-6{padding-inline:calc(var(--tw-spacing,.4rem)*6)}.tw\:py-0{padding-block:calc(var(--tw-spacing,.4rem)*0)}.tw\:py-2{padding-block:calc(var(--tw-spacing,.4rem)*2)}.tw\:py-3{padding-block:calc(var(--tw-spacing,.4rem)*3)}.tw\:py-4{padding-block:calc(var(--tw-spacing,.4rem)*4)}.tw\:pt-2{padding-top:calc(var(--tw-spacing,.4rem)*2)}.tw\:pt-8{padding-top:calc(var(--tw-spacing,.4rem)*8)}.tw\:pb-4{padding-bottom:calc(var(--tw-spacing,.4rem)*4)}.tw\:pl-4{padding-left:calc(var(--tw-spacing,.4rem)*4)}.tw\:pl-5{padding-left:calc(var(--tw-spacing,.4rem)*5)}.tw\:text-center{text-align:center}.tw\:text-left{text-align:left}.tw\:font-serif{font-family:var(--tw-font-serif,"Bitter",ui-serif,Georgia,Cambria,"Times New Roman",Times,serif)}.tw\:text-2xl{font-size:var(--tw-text-2xl,2.5rem);line-height:var(--tw-leading,var(--tw-text-2xl--line-height,1.4))}.tw\:text-3xl{font-size:var(--tw-text-3xl,3rem);line-height:var(--tw-leading,var(--tw-text-3xl--line-height,1.4))}.tw\:text-4xl{font-size:var(--tw-text-4xl,4rem);line-height:var(--tw-leading,var(--tw-text-4xl--line-height,1.4))}.tw\:text-6xl{font-size:var(--tw-text-6xl,6rem);line-height:var(--tw-leading,var(--tw-text-6xl--line-height,1.6))}.tw\:text-9xl{font-size:var(--tw-text-9xl,12.8rem);line-height:var(--tw-leading,var(--tw-text-9xl--line-height,1.6))}.tw\:text-base{font-size:var(--tw-text-base,1.6rem);line-height:var(--tw-leading,var(--tw-text-base--line-height,1.4))}.tw\:text-lg{font-size:var(--tw-text-lg,1.8rem);line-height:var(--tw-leading,var(--tw-text-lg--line-height,1.4))}.tw\:text-sm{font-size:var(--tw-text-sm,1.4rem);line-height:var(--tw-leading,var(--tw-text-sm--line-height,1.4))}.tw\:text-xl{font-size:var(--tw-text-xl,2rem);line-height:var(--tw-leading,var(--tw-text-xl--line-height,1.4))}.tw\:leading-\[1\.4\]{--tw-leading:1.4;line-height:1.4}.tw\:leading-\[1\.6\]{--tw-leading:1.6;line-height:1.6}.tw\:font-bold{--tw-font-weight:var(--tw-font-weight-bold,700);font-weight:var(--tw-font-weight-bold,700)}.tw\:font-light{--tw-font-weight:var(--tw-font-weight-light,300);font-weight:var(--tw-font-weight-light,300)}.tw\:font-medium{--tw-font-weight:var(--tw-font-weight-medium,500);font-weight:var(--tw-font-weight-medium,500)}.tw\:font-normal{--tw-font-weight:var(--tw-font-weight-normal,400);font-weight:var(--tw-font-weight-normal,400)}.tw\:text-black{color:var(--tw-color-black,#000)}.tw\:text-black-contrast{color:var(--tw-color-black-contrast,#fff)}.tw\:text-blue{color:var(--tw-color-blue,#187bb4)}.tw\:text-blue-contrast{color:var(--tw-color-blue-contrast,#fff)}.tw\:text-blue-on-light{color:var(--tw-color-blue-on-light,#1775ab)}.tw\:text-body-copy{color:var(--tw-color-body-copy,#555)}.tw\:text-body-copy-bold{color:var(--tw-color-body-copy-bold,#333)}.tw\:text-body-copy-link{color:var(--tw-color-body-copy-link,#187bb4)}.tw\:text-body-copy-link-on-dark{color:var(--tw-color-body-copy-link-on-dark,#1d93d7)}.tw\:text-body-copy-link-on-light{color:var(--tw-color-body-copy-link-on-light,#166ea2)}.tw\:text-body-copy-on-dark{color:var(--tw-color-body-copy-on-dark,#ccc)}.tw\:text-dark-grey{color:var(--tw-color-dark-grey,#747676)}.tw\:text-dark-grey-contrast{color:var(--tw-color-dark-grey-contrast,#fff)}.tw\:text-green{color:var(--tw-color-green,#318738)}.tw\:text-green-contrast{color:var(--tw-color-green-contrast,#fff)}.tw\:text-light-grey{color:var(--tw-color-light-grey,#d8d8d8)}.tw\:text-light-grey-contrast{color:var(--tw-color-light-grey-contrast,#000)}.tw\:text-red{color:var(--tw-color-red,#e51937)}.tw\:text-red-contrast{color:var(--tw-color-red-contrast,#fff)}.tw\:text-white{color:var(--tw-color-white,#fff)}.tw\:text-white-contrast{color:var(--tw-color-white-contrast,#000)}.tw\:text-yellow{color:var(--tw-color-yellow,#ffc429)}.tw\:text-yellow-contrast{color:var(--tw-color-yellow-contrast,#000)}.tw\:italic{font-style:italic}.tw\:no-underline{text-decoration-line:none}.tw\:underline{text-decoration-line:underline}.tw\:decoration-current{text-decoration-color:currentColor}.tw\:decoration-transparent{text-decoration-color:#0000}.tw\:decoration-1{text-decoration-thickness:1px}.tw\:opacity-0{opacity:0}.tw\:opacity-50{opacity:.5}.tw\:opacity-60{opacity:.6}.tw\:shadow-sm{--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)}.tw\:blur-sm{--tw-blur:blur(var(--tw-blur-sm,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,)}.tw\:transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--tw-default-transition-duration,.15s))}.tw\:transition-\[transform\,color\,opacity\,visibility\]{transition-property:transform,color,opacity,visibility;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--tw-default-transition-duration,.15s))}.tw\: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(--tw-default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--tw-default-transition-duration,.15s))}.tw\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--tw-default-transition-duration,.15s))}.tw\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--tw-default-transition-duration,.15s))}.tw\:duration-200{--tw-duration:.2s;transition-duration:.2s}.tw\:duration-300{--tw-duration:.3s;transition-duration:.3s}.tw\:ease-in-out{--tw-ease:var(--tw-ease-in-out,cubic-bezier(.4,0,.2,1));transition-timing-function:var(--tw-ease-in-out,cubic-bezier(.4,0,.2,1))}.tw\:ease-out{--tw-ease:var(--tw-ease-out,cubic-bezier(0,0,.2,1));transition-timing-function:var(--tw-ease-out,cubic-bezier(0,0,.2,1))}@media (hover:hover){.tw\:group-hover\:scale-110:is(:where(.tw\:group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.tw\:group-hover\:bg-yellow:is(:where(.tw\:group):hover *){background-color:var(--tw-color-yellow,#ffc429)}}.tw\:group-ui-checked\:opacity-100:is(:where(.tw\:group)[data-headlessui-state~=checked] *),.tw\:group-ui-checked\:opacity-100:is(:where([data-headlessui-state~=checked]) :where(.tw\:group) *){opacity:1}.tw\:group-hocus-visible\:bg-yellow:is(:is(:where(.tw\:group):hover,:where(.tw\:group):focus-visible) *){background-color:var(--tw-color-yellow,#ffc429)}.tw\:group-hocus-visible\:text-blue-contrast:is(:is(:where(.tw\:group):hover,:where(.tw\:group):focus-visible) *){color:var(--tw-color-blue-contrast,#fff)}.tw\:group-hocus-visible\:text-yellow-contrast:is(:is(:where(.tw\:group):hover,:where(.tw\:group):focus-visible) *){color:var(--tw-color-yellow-contrast,#000)}@media (hover:hover){.tw\:hover\:bg-red:hover{background-color:var(--tw-color-red,#e51937)}.tw\:hover\:bg-red\/30:hover{background-color:color-mix(in oklab,var(--tw-color-red,#e51937)30%,transparent)}.tw\:hover\:decoration-transparent:hover{text-decoration-color:#0000}}.tw\:focus\:bg-red\/30:focus{background-color:color-mix(in oklab,var(--tw-color-red,#e51937)30%,transparent)}.tw\:focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + 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)}.tw\:focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.tw\:focus-visible\:-translate-x-1:focus-visible{--tw-translate-x:calc(var(--tw-spacing,.4rem)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.tw\:focus-visible\:translate-x-1:focus-visible{--tw-translate-x:calc(var(--tw-spacing,.4rem)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.tw\:focus-visible\:text-black:focus-visible{color:var(--tw-color-black,#000)}.tw\:focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + 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)}.tw\:focus-visible\:ring-black:focus-visible{--tw-ring-color:var(--tw-color-black,#000)}.tw\:focus-visible\:ring-blue:focus-visible{--tw-ring-color:var(--tw-color-blue,#187bb4)}.tw\:focus-visible\:ring-body-copy-link:focus-visible{--tw-ring-color:var(--tw-color-body-copy-link,#187bb4)}.tw\:focus-visible\:ring-body-copy-link-on-light:focus-visible{--tw-ring-color:var(--tw-color-body-copy-link-on-light,#166ea2)}.tw\:focus-visible\:ring-dark-grey:focus-visible{--tw-ring-color:var(--tw-color-dark-grey,#747676)}.tw\:focus-visible\:ring-green:focus-visible{--tw-ring-color:var(--tw-color-green,#318738)}.tw\:focus-visible\:ring-light-grey:focus-visible{--tw-ring-color:var(--tw-color-light-grey,#d8d8d8)}.tw\:focus-visible\:ring-red:focus-visible{--tw-ring-color:var(--tw-color-red,#e51937)}.tw\:focus-visible\:ring-white:focus-visible{--tw-ring-color:var(--tw-color-white,#fff)}.tw\:focus-visible\:ring-yellow:focus-visible{--tw-ring-color:var(--tw-color-yellow,#ffc429)}.tw\:focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.tw\:focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.tw\:has-\[strong\]\:text-body-copy-bold:has(:is(strong)){color:var(--tw-color-body-copy-bold,#333)}.tw\:data-\[closed\]\:opacity-0[data-closed]{opacity:0}@media (width>=40rem){.tw\:sm\:px-16{padding-inline:calc(var(--tw-spacing,.4rem)*16)}.tw\:sm\:text-6xl{font-size:var(--tw-text-6xl,6rem);line-height:var(--tw-leading,var(--tw-text-6xl--line-height,1.6))}}@media (width>=48rem){.tw\:md\:sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.tw\:md\:absolute{position:absolute}.tw\:md\:z-20{z-index:20}.tw\:md\:block{display:block}.tw\:md\:contents{display:contents}.tw\:md\:grid{display:grid}.tw\:md\:aspect-\[2\.625\]{aspect-ratio:2.625}.tw\:md\:w-1\/3{width:33.3333%}.tw\:md\:w-9{width:calc(var(--tw-spacing,.4rem)*9)}.tw\:md\:flex-row{flex-direction:row}.tw\:md\:rounded-full{border-radius:3.40282e38px}.tw\:md\:bg-black\/70{background-color:color-mix(in oklab,var(--tw-color-black,#000)70%,transparent)}.tw\:md\:p-4{padding:calc(var(--tw-spacing,.4rem)*4)}.tw\:md\:px-4{padding-inline:calc(var(--tw-spacing,.4rem)*4)}.tw\:md\:text-4xl{font-size:var(--tw-text-4xl,4rem);line-height:var(--tw-leading,var(--tw-text-4xl--line-height,1.4))}}@media (width>=64rem){.tw\:lg\:absolute{position:absolute}.tw\:lg\:bottom-0{bottom:calc(var(--tw-spacing,.4rem)*0)}.tw\:lg\:left-1\/2{left:50%}.tw\:lg\:container{width:100%}@media (width>=40rem){.tw\:lg\:container{max-width:40rem}}@media (width>=48rem){.tw\:lg\:container{max-width:48rem}}.tw\:lg\:container{max-width:64rem}@media (width>=80rem){.tw\:lg\:container{max-width:80rem}}@media (width>=96rem){.tw\:lg\:container{max-width:96rem}}.tw\:lg\:mx-auto{margin-inline:auto}.tw\:lg\:ml-auto{margin-left:auto}.tw\:lg\:max-w-7xl{max-width:var(--tw-container-7xl,80rem)}.tw\:lg\:max-w-\[50\%\]{max-width:50%}.tw\:lg\:-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.tw\:lg\:items-center{align-items:center}.tw\:lg\:items-end{align-items:flex-end}.tw\:lg\:bg-black\/80{background-color:color-mix(in oklab,var(--tw-color-black,#000)80%,transparent)}.tw\:lg\:p-4{padding:calc(var(--tw-spacing,.4rem)*4)}.tw\:lg\:text-center{text-align:center}.tw\:lg\:text-right{text-align:right}.tw\:lg\:backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}}.tw\:ui-checked\:bg-black[data-headlessui-state~=checked],:where([data-headlessui-state~=checked]) .tw\:ui-checked\:bg-black{background-color:var(--tw-color-black,#000)}.tw\:ui-checked\:bg-blue[data-headlessui-state~=checked],:where([data-headlessui-state~=checked]) .tw\:ui-checked\:bg-blue{background-color:var(--tw-color-blue,#187bb4)}.tw\:ui-checked\:bg-dark-grey[data-headlessui-state~=checked],:where([data-headlessui-state~=checked]) .tw\:ui-checked\:bg-dark-grey{background-color:var(--tw-color-dark-grey,#747676)}.tw\:ui-checked\:bg-green[data-headlessui-state~=checked],:where([data-headlessui-state~=checked]) .tw\:ui-checked\:bg-green{background-color:var(--tw-color-green,#318738)}.tw\:ui-checked\:bg-light-grey[data-headlessui-state~=checked],:where([data-headlessui-state~=checked]) .tw\:ui-checked\:bg-light-grey{background-color:var(--tw-color-light-grey,#d8d8d8)}.tw\:ui-checked\:bg-red[data-headlessui-state~=checked],:where([data-headlessui-state~=checked]) .tw\:ui-checked\:bg-red{background-color:var(--tw-color-red,#e51937)}.tw\:ui-checked\:bg-white[data-headlessui-state~=checked],:where([data-headlessui-state~=checked]) .tw\:ui-checked\:bg-white{background-color:var(--tw-color-white,#fff)}.tw\:ui-checked\:bg-yellow[data-headlessui-state~=checked],:where([data-headlessui-state~=checked]) .tw\:ui-checked\:bg-yellow{background-color:var(--tw-color-yellow,#ffc429)}.tw\:hocus-visible\:-translate-x-1:hover,.tw\:hocus-visible\:-translate-x-1:focus-visible{--tw-translate-x:calc(var(--tw-spacing,.4rem)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.tw\:hocus-visible\:translate-x-1:hover,.tw\:hocus-visible\:translate-x-1:focus-visible{--tw-translate-x:calc(var(--tw-spacing,.4rem)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.tw\:hocus-visible\:bg-black:hover,.tw\:hocus-visible\:bg-black:focus-visible{background-color:var(--tw-color-black,#000)}.tw\:hocus-visible\:bg-black-focus:hover,.tw\:hocus-visible\:bg-black-focus:focus-visible{background-color:var(--tw-color-black-focus,#444)}.tw\:hocus-visible\:bg-blue:hover,.tw\:hocus-visible\:bg-blue:focus-visible{background-color:var(--tw-color-blue,#187bb4)}.tw\:hocus-visible\:bg-blue-focus:hover,.tw\:hocus-visible\:bg-blue-focus:focus-visible{background-color:var(--tw-color-blue-focus,#135f8b)}.tw\:hocus-visible\:bg-dark-grey:hover,.tw\:hocus-visible\:bg-dark-grey:focus-visible{background-color:var(--tw-color-dark-grey,#747676)}.tw\:hocus-visible\:bg-dark-grey-focus:hover,.tw\:hocus-visible\:bg-dark-grey-focus:focus-visible{background-color:var(--tw-color-dark-grey-focus,#63625f)}.tw\:hocus-visible\:bg-green:hover,.tw\:hocus-visible\:bg-green:focus-visible{background-color:var(--tw-color-green,#318738)}.tw\:hocus-visible\:bg-green-focus:hover,.tw\:hocus-visible\:bg-green-focus:focus-visible{background-color:var(--tw-color-green-focus,#27682c)}.tw\:hocus-visible\:bg-light-grey:hover,.tw\:hocus-visible\:bg-light-grey:focus-visible{background-color:var(--tw-color-light-grey,#d8d8d8)}.tw\:hocus-visible\:bg-light-grey-focus:hover,.tw\:hocus-visible\:bg-light-grey-focus:focus-visible{background-color:var(--tw-color-light-grey-focus,#bfbfbf)}.tw\:hocus-visible\:bg-red:hover,.tw\:hocus-visible\:bg-red:focus-visible{background-color:var(--tw-color-red,#e51937)}.tw\:hocus-visible\:bg-red-focus:hover,.tw\:hocus-visible\:bg-red-focus:focus-visible{background-color:var(--tw-color-red-focus,#b3142c)}.tw\:hocus-visible\:bg-white:hover,.tw\:hocus-visible\:bg-white:focus-visible{background-color:var(--tw-color-white,#fff)}.tw\:hocus-visible\:bg-white-focus:hover,.tw\:hocus-visible\:bg-white-focus:focus-visible{background-color:var(--tw-color-white-focus,#ddd)}.tw\:hocus-visible\:bg-yellow:hover,.tw\:hocus-visible\:bg-yellow:focus-visible{background-color:var(--tw-color-yellow,#ffc429)}.tw\:hocus-visible\:bg-yellow-focus:hover,.tw\:hocus-visible\:bg-yellow-focus:focus-visible{background-color:var(--tw-color-yellow-focus,#ffe299)}.tw\:hocus-visible\:text-black:hover,.tw\:hocus-visible\:text-black:focus-visible{color:var(--tw-color-black,#000)}.tw\:hocus-visible\:text-black-contrast:hover,.tw\:hocus-visible\:text-black-contrast:focus-visible{color:var(--tw-color-black-contrast,#fff)}.tw\:hocus-visible\:text-blue-contrast:hover,.tw\:hocus-visible\:text-blue-contrast:focus-visible{color:var(--tw-color-blue-contrast,#fff)}.tw\:hocus-visible\:text-dark-grey-contrast:hover,.tw\:hocus-visible\:text-dark-grey-contrast:focus-visible{color:var(--tw-color-dark-grey-contrast,#fff)}.tw\:hocus-visible\:text-green-contrast:hover,.tw\:hocus-visible\:text-green-contrast:focus-visible{color:var(--tw-color-green-contrast,#fff)}.tw\:hocus-visible\:text-light-grey-contrast:hover,.tw\:hocus-visible\:text-light-grey-contrast:focus-visible{color:var(--tw-color-light-grey-contrast,#000)}.tw\:hocus-visible\:text-red-contrast:hover,.tw\:hocus-visible\:text-red-contrast:focus-visible{color:var(--tw-color-red-contrast,#fff)}.tw\:hocus-visible\:text-white-contrast:hover,.tw\:hocus-visible\:text-white-contrast:focus-visible{color:var(--tw-color-white-contrast,#000)}.tw\:hocus-visible\:text-yellow-contrast:hover,.tw\:hocus-visible\:text-yellow-contrast:focus-visible{color:var(--tw-color-yellow-contrast,#000)}.tw\:hocus-visible\:decoration-black:hover,.tw\:hocus-visible\:decoration-black:focus-visible{-webkit-text-decoration-color:var(--tw-color-black,#000);text-decoration-color:var(--tw-color-black,#000)}.tw\:hocus-visible\:decoration-transparent:hover,.tw\:hocus-visible\:decoration-transparent:focus-visible{text-decoration-color:#0000}.tw\:\[\&_p\:last-child\]\:mb-0 p:last-child{margin-bottom:calc(var(--tw-spacing,.4rem)*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-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-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@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-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-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade{0%{opacity:0}to{opacity:1}}
@@ -0,0 +1,11 @@
1
+ export declare function bezier(delta: number, cx1: number, cy1: number, cx2: number, cy2: number): number;
2
+
3
+ export declare function clamp(value: number, min: number, max: number): number;
4
+
5
+ export declare function lerp(a: number, b: number, delta: number): number;
6
+
7
+ export declare function mod(n: number, m: number): number;
8
+
9
+ export declare const toTitleCase: (str: string) => string;
10
+
11
+ export { }
package/dist/index.js ADDED
@@ -0,0 +1,33 @@
1
+ import { b as l, c as b, l as u, m as C } from "./math-utils-BwzyIQRL.js";
2
+ const c = (e) => {
3
+ var a, i, n;
4
+ const t = [
5
+ "a",
6
+ "an",
7
+ "the",
8
+ "and",
9
+ "but",
10
+ "or",
11
+ "for",
12
+ "nor",
13
+ "on",
14
+ "at",
15
+ "to",
16
+ "by",
17
+ "of",
18
+ "in",
19
+ "with"
20
+ ], s = {
21
+ "co-op": "Co-op",
22
+ "thesis-based": "Thesis-based",
23
+ "course-based": "Course-based"
24
+ };
25
+ return e in s ? s[e] : ((n = (i = (a = e == null ? void 0 : e.toLowerCase()) == null ? void 0 : a.split(/\s+|-|_+/)) == null ? void 0 : i.map((o) => t.includes(o) ? o : o.charAt(0).toUpperCase() + o.slice(1))) == null ? void 0 : n.join(" ")) ?? "";
26
+ };
27
+ export {
28
+ l as bezier,
29
+ b as clamp,
30
+ u as lerp,
31
+ C as mod,
32
+ c as toTitleCase
33
+ };
package/dist/info.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ import { JSX } from 'react/jsx-runtime';
2
+ import { PropsWithChildren } from 'react';
3
+
4
+ export declare function Info({ children, color }: InfoProps): JSX.Element;
5
+
6
+ export declare namespace Info {
7
+ var displayName: string;
8
+ }
9
+
10
+ export declare type InfoProps = PropsWithChildren<{
11
+ /**
12
+ * The color of the left border in the info component.
13
+ *
14
+ * @default 'red'
15
+ */
16
+ color?: 'red' | 'yellow' | 'blue' | 'green' | 'light-grey' | 'dark-grey' | 'black' | 'white';
17
+ }>;
18
+
19
+ export { }
package/dist/info.js ADDED
@@ -0,0 +1,24 @@
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import { tv as o } from "tailwind-variants";
3
+ function w({ children: r, color: e = "red" }) {
4
+ const l = o({
5
+ base: "tw:flex tw:flex-col tw:gap-1 tw:border-l-4 tw:pl-4",
6
+ variants: {
7
+ color: {
8
+ red: "tw:border-l-red",
9
+ yellow: "tw:border-l-yellow",
10
+ blue: "tw:border-l-blue",
11
+ green: "tw:border-l-green",
12
+ "light-grey": "tw:border-l-light-grey",
13
+ "dark-grey": "tw:border-l-dark-grey",
14
+ black: "tw:border-l-black",
15
+ white: "tw:border-l-white"
16
+ }
17
+ }
18
+ });
19
+ return /* @__PURE__ */ t("div", { className: l({ color: e }), children: r });
20
+ }
21
+ w.displayName = "Info";
22
+ export {
23
+ w as Info
24
+ };
@@ -0,0 +1,11 @@
1
+ import { JSX } from 'react/jsx-runtime';
2
+ import { PropsWithChildren } from 'react';
3
+
4
+ export declare function LinkCarouselContent({ children, className }: LinkCarouselContentProps): JSX.Element;
5
+
6
+ export declare type LinkCarouselContentProps = PropsWithChildren<{
7
+ /** Additional classes to apply to the link carousel content container. */
8
+ className?: string;
9
+ }>;
10
+
11
+ export { }
@@ -0,0 +1,20 @@
1
+ import { jsx as n } from "react/jsx-runtime";
2
+ import { useContext as s } from "react";
3
+ import { twMerge as l } from "tailwind-merge";
4
+ import { tv as a } from "tailwind-variants";
5
+ import { LinkCarouselContext as i } from "./link-carousel-context.js";
6
+ function w({ children: o, className: e }) {
7
+ const t = s(i), r = a({
8
+ base: "tw:relative tw:h-full tw:hidden tw:md:block",
9
+ variants: {
10
+ stack: {
11
+ true: "tw:w-full",
12
+ false: "tw:flex-1"
13
+ }
14
+ }
15
+ });
16
+ return /* @__PURE__ */ n("div", { className: `uofg-link-carousel-content ${l(r({ stack: t == null ? void 0 : t.stack }), e)}`, children: o });
17
+ }
18
+ export {
19
+ w as LinkCarouselContent
20
+ };
@@ -0,0 +1,30 @@
1
+ import { Context } from 'react';
2
+ import { PropsWithChildren } from 'react';
3
+
4
+ export declare const LinkCarouselContext: Context<LinkCarouselContextValue | null>;
5
+
6
+ export declare type LinkCarouselContextValue = {
7
+ previousActiveId: LinkCarouselId | null;
8
+ clearPreviousActiveId: () => void;
9
+ activeId: LinkCarouselId | null;
10
+ setActiveId: (id: LinkCarouselId) => void;
11
+ stack: LinkCarouselProps['stack'];
12
+ direction: LinkCarouselProps['direction'];
13
+ };
14
+
15
+ export declare type LinkCarouselId = string | number;
16
+
17
+ declare type LinkCarouselProps = PropsWithChildren<{
18
+ /** Additional classes to apply to the link carousel. */
19
+ className?: string;
20
+ /** Whether the carousel links should stack on top of the content, rather than beside it. */
21
+ stack?: boolean;
22
+ /**
23
+ * The side of the carousel that the links should be displayed on.
24
+ *
25
+ * @default 'left'
26
+ */
27
+ direction?: 'left' | 'right';
28
+ }>;
29
+
30
+ export { }
@@ -0,0 +1,5 @@
1
+ import { createContext as t } from "react";
2
+ const e = t(null);
3
+ export {
4
+ e as LinkCarouselContext
5
+ };
@@ -0,0 +1,15 @@
1
+ import { JSX } from 'react/jsx-runtime';
2
+ import { PropsWithChildren } from 'react';
3
+
4
+ declare type LinkCarouselId = string | number;
5
+
6
+ export declare function LinkCarouselItem({ id, children, className }: LinkCarouselItemProps): JSX.Element;
7
+
8
+ export declare type LinkCarouselItemProps = PropsWithChildren<{
9
+ /** The unique identifier for the link carousel item. */
10
+ id: LinkCarouselId;
11
+ /** Additional classes to apply to the link carousel item */
12
+ className?: string;
13
+ }>;
14
+
15
+ export { }
@@ -0,0 +1,21 @@
1
+ import { jsx as i, Fragment as w } from "react/jsx-runtime";
2
+ import { useContext as l } from "react";
3
+ import { twMerge as m } from "tailwind-merge";
4
+ import { tv as n } from "tailwind-variants";
5
+ import { LinkCarouselContext as c } from "./link-carousel-context.js";
6
+ function k({ id: e, children: r, className: o }) {
7
+ const t = l(c), s = n({
8
+ base: "tw:w-full tw:hidden tw:bg-white",
9
+ variants: {
10
+ isActive: { true: "tw:block tw:relative tw:animate-fade-in tw:z-10" },
11
+ wasActive: { true: "tw:block tw:absolute tw:z-0 tw:top-0 tw:left-0" }
12
+ }
13
+ }), a = m(
14
+ s({ isActive: (t == null ? void 0 : t.activeId) === e, wasActive: (t == null ? void 0 : t.previousActiveId) === e }),
15
+ o
16
+ );
17
+ return /* @__PURE__ */ i(w, { children: /* @__PURE__ */ i("div", { className: `uofg-link-carousel-item ${a}`, children: r }) });
18
+ }
19
+ export {
20
+ k as LinkCarouselItem
21
+ };
@@ -0,0 +1,34 @@
1
+ import { ElementType } from 'react';
2
+ import { JSX } from 'react/jsx-runtime';
3
+ import { PropsWithChildren } from 'react';
4
+
5
+ declare const defaultElement = "a";
6
+
7
+ declare type LinkCarouselId = string | number;
8
+
9
+ export declare function LinkCarouselLink<T extends LinkCarouselLinkElementType = typeof defaultElement>({ as, id, children, className, href, ...rest }: LinkCarouselLinkProps<T>): JSX.Element;
10
+
11
+ export declare namespace LinkCarouselLink {
12
+ var displayName: string;
13
+ }
14
+
15
+ export declare type LinkCarouselLinkElementType = ElementType<{
16
+ href?: string;
17
+ }, 'a'>;
18
+
19
+ export declare type LinkCarouselLinkProps<T extends LinkCarouselLinkElementType = typeof defaultElement> = PropsWithChildren<{
20
+ /**
21
+ * The element type to render as.
22
+ *
23
+ * @default 'a'
24
+ */
25
+ as?: T;
26
+ /** The id of the link, this is used to determine which carousel item is controlled by this link. */
27
+ id: LinkCarouselId;
28
+ /** The URL this links to. */
29
+ href: string;
30
+ /** Additional classes to apply to the link. */
31
+ className?: string;
32
+ }>;
33
+
34
+ export { }
@@ -0,0 +1,39 @@
1
+ import { jsx as m } from "react/jsx-runtime";
2
+ import { useContext as c } from "react";
3
+ import { twMerge as k } from "tailwind-merge";
4
+ import { tv as u } from "tailwind-variants";
5
+ import { LinkCarouselContext as w } from "./link-carousel-context.js";
6
+ const f = "a";
7
+ function p({
8
+ as: e,
9
+ id: o,
10
+ children: r,
11
+ className: s,
12
+ href: n,
13
+ ...a
14
+ }) {
15
+ const i = e ?? f, t = c(w), l = u({
16
+ base: "tw:w-full tw:flex-1 tw:text-xl tw:bg-black tw:flex tw:items-center tw:justify-center tw:text-black-contrast tw:p-6",
17
+ variants: {
18
+ stack: {
19
+ true: "tw:md:bg-black/70"
20
+ }
21
+ }
22
+ });
23
+ return /* @__PURE__ */ m(
24
+ i,
25
+ {
26
+ ...a,
27
+ href: n,
28
+ className: k(l({ stack: t == null ? void 0 : t.stack }), s),
29
+ onMouseEnter: () => {
30
+ t == null || t.setActiveId(o);
31
+ },
32
+ children: r
33
+ }
34
+ );
35
+ }
36
+ p.displayName = "LinkCarouselLink";
37
+ export {
38
+ p as LinkCarouselLink
39
+ };
@@ -0,0 +1,11 @@
1
+ import { JSX } from 'react/jsx-runtime';
2
+ import { PropsWithChildren } from 'react';
3
+
4
+ export declare function LinkCarouselLinks({ children, className }: LinkCarouselLinksProps): JSX.Element;
5
+
6
+ export declare type LinkCarouselLinksProps = PropsWithChildren<{
7
+ /** Additional classes to apply to the link carousel links. */
8
+ className?: string;
9
+ }>;
10
+
11
+ export { }
@@ -0,0 +1,24 @@
1
+ import { jsx as i } from "react/jsx-runtime";
2
+ import { useContext as e } from "react";
3
+ import { twMerge as l } from "tailwind-merge";
4
+ import { tv as a } from "tailwind-variants";
5
+ import { LinkCarouselContext as n } from "./link-carousel-context.js";
6
+ function p({ children: o, className: r }) {
7
+ const t = e(n), s = a({
8
+ base: "tw:flex tw:flex-col tw:gap-2 tw:w-full tw:top-0 tw:md:w-1/3 tw:md:z-20",
9
+ variants: {
10
+ stack: {
11
+ true: "tw:md:absolute tw:h-full",
12
+ false: "tw:h-auto"
13
+ },
14
+ direction: {
15
+ left: "tw:left-0",
16
+ right: "tw:right-0"
17
+ }
18
+ }
19
+ })({ stack: t == null ? void 0 : t.stack, direction: t == null ? void 0 : t.direction });
20
+ return /* @__PURE__ */ i("div", { className: `uofg-link-carousel-links ${l(s, r)}`, children: o });
21
+ }
22
+ export {
23
+ p as LinkCarouselLinks
24
+ };