@curvenote/theme-ui 1.0.1 → 2.0.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 (166) hide show
  1. package/dist/components/layout/app-layout.d.ts +1 -1
  2. package/dist/components/layout/app-layout.d.ts.map +1 -1
  3. package/dist/components/layout/app-layout.js +6 -5
  4. package/dist/components/layout/app-sidebar.d.ts.map +1 -1
  5. package/dist/components/layout/app-sidebar.js +10 -6
  6. package/dist/components/layout/article-layout.d.ts +1 -1
  7. package/dist/components/layout/article-layout.d.ts.map +1 -1
  8. package/dist/components/layout/article-layout.js +6 -7
  9. package/dist/components/layout/header.js +1 -1
  10. package/dist/components/layout/index.d.ts +1 -0
  11. package/dist/components/layout/index.d.ts.map +1 -1
  12. package/dist/components/layout/index.js +1 -0
  13. package/dist/components/layout/loading-bar.d.ts +8 -1
  14. package/dist/components/layout/loading-bar.d.ts.map +1 -1
  15. package/dist/components/layout/loading-bar.js +12 -4
  16. package/dist/components/layout/site-header.d.ts +6 -1
  17. package/dist/components/layout/site-header.d.ts.map +1 -1
  18. package/dist/components/layout/site-header.js +7 -4
  19. package/dist/components/layout/types.d.ts +6 -0
  20. package/dist/components/layout/types.d.ts.map +1 -1
  21. package/dist/components/providers/analytics-boundary.d.ts +18 -0
  22. package/dist/components/providers/analytics-boundary.d.ts.map +1 -0
  23. package/dist/components/providers/analytics-boundary.js +53 -0
  24. package/dist/components/providers/analytics-dev-log.d.ts +11 -0
  25. package/dist/components/providers/analytics-dev-log.d.ts.map +1 -0
  26. package/dist/components/providers/analytics-dev-log.js +46 -0
  27. package/dist/components/providers/analytics-dev-tray.d.ts +2 -0
  28. package/dist/components/providers/analytics-dev-tray.d.ts.map +1 -0
  29. package/dist/components/providers/analytics-dev-tray.js +56 -0
  30. package/dist/components/providers/article-versions-provider.d.ts +19 -0
  31. package/dist/components/providers/article-versions-provider.d.ts.map +1 -0
  32. package/dist/components/providers/article-versions-provider.js +13 -0
  33. package/dist/components/providers/curvenote-providers.d.ts +12 -13
  34. package/dist/components/providers/curvenote-providers.d.ts.map +1 -1
  35. package/dist/components/providers/curvenote-providers.js +20 -27
  36. package/dist/components/providers/design.d.ts +3 -33
  37. package/dist/components/providers/design.d.ts.map +1 -1
  38. package/dist/components/providers/design.js +64 -21
  39. package/dist/components/providers/index.d.ts +4 -2
  40. package/dist/components/providers/index.d.ts.map +1 -1
  41. package/dist/components/providers/index.js +3 -1
  42. package/dist/components/providers/lightbox-provider.d.ts +8 -0
  43. package/dist/components/providers/lightbox-provider.d.ts.map +1 -1
  44. package/dist/components/providers/lightbox-provider.js +28 -5
  45. package/dist/components/providers/overlay-depth.d.ts +16 -0
  46. package/dist/components/providers/overlay-depth.d.ts.map +1 -0
  47. package/dist/components/providers/overlay-depth.js +16 -0
  48. package/dist/components/providers/ping-boundary.d.ts +3 -1
  49. package/dist/components/providers/ping-boundary.d.ts.map +1 -1
  50. package/dist/components/providers/ping-boundary.js +7 -4
  51. package/dist/components/providers/platform-providers.d.ts +0 -7
  52. package/dist/components/providers/platform-providers.d.ts.map +1 -1
  53. package/dist/components/providers/platform-providers.js +0 -14
  54. package/dist/components/ui/abbreviations.d.ts +3 -1
  55. package/dist/components/ui/abbreviations.d.ts.map +1 -1
  56. package/dist/components/ui/abbreviations.js +13 -6
  57. package/dist/components/ui/accessibility-skip-to.d.ts +13 -3
  58. package/dist/components/ui/accessibility-skip-to.d.ts.map +1 -1
  59. package/dist/components/ui/accessibility-skip-to.js +4 -1
  60. package/dist/components/ui/arrow.d.ts +6 -0
  61. package/dist/components/ui/arrow.d.ts.map +1 -0
  62. package/dist/components/ui/arrow.js +15 -0
  63. package/dist/components/ui/article-actions-downloads.d.ts.map +1 -1
  64. package/dist/components/ui/article-actions-downloads.js +74 -7
  65. package/dist/components/ui/article-actions-dropdown.d.ts +2 -1
  66. package/dist/components/ui/article-actions-dropdown.d.ts.map +1 -1
  67. package/dist/components/ui/article-actions-dropdown.js +102 -21
  68. package/dist/components/ui/article-actions-share.d.ts +18 -0
  69. package/dist/components/ui/article-actions-share.d.ts.map +1 -1
  70. package/dist/components/ui/article-actions-share.js +38 -2
  71. package/dist/components/ui/article-actions.d.ts.map +1 -1
  72. package/dist/components/ui/article-actions.js +16 -3
  73. package/dist/components/ui/article-bar.d.ts +3 -1
  74. package/dist/components/ui/article-bar.d.ts.map +1 -1
  75. package/dist/components/ui/article-bar.js +19 -5
  76. package/dist/components/ui/article-card.js +1 -1
  77. package/dist/components/ui/author-popover.d.ts +2 -1
  78. package/dist/components/ui/author-popover.d.ts.map +1 -1
  79. package/dist/components/ui/author-popover.js +42 -7
  80. package/dist/components/ui/backmatter.d.ts.map +1 -1
  81. package/dist/components/ui/backmatter.js +23 -5
  82. package/dist/components/ui/banner.d.ts.map +1 -1
  83. package/dist/components/ui/banner.js +1 -1
  84. package/dist/components/ui/bibliography.d.ts +2 -2
  85. package/dist/components/ui/bibliography.d.ts.map +1 -1
  86. package/dist/components/ui/bibliography.js +10 -9
  87. package/dist/components/ui/button.d.ts +1 -1
  88. package/dist/components/ui/button.d.ts.map +1 -1
  89. package/dist/components/ui/button.js +2 -0
  90. package/dist/components/ui/calendar.d.ts +10 -0
  91. package/dist/components/ui/calendar.d.ts.map +1 -0
  92. package/dist/components/ui/calendar.js +85 -0
  93. package/dist/components/ui/citation.d.ts +2 -2
  94. package/dist/components/ui/citation.d.ts.map +1 -1
  95. package/dist/components/ui/citation.js +45 -15
  96. package/dist/components/ui/collapsible-backmatter-section.d.ts +28 -0
  97. package/dist/components/ui/collapsible-backmatter-section.d.ts.map +1 -0
  98. package/dist/components/ui/collapsible-backmatter-section.js +52 -0
  99. package/dist/components/ui/cookie-banner.d.ts +1 -1
  100. package/dist/components/ui/cookie-banner.d.ts.map +1 -1
  101. package/dist/components/ui/cookie-banner.js +9 -2
  102. package/dist/components/ui/document-outline.d.ts.map +1 -1
  103. package/dist/components/ui/document-outline.js +38 -20
  104. package/dist/components/ui/footer-links.d.ts.map +1 -1
  105. package/dist/components/ui/footer-links.js +4 -0
  106. package/dist/components/ui/frontmatter-badges.d.ts +15 -5
  107. package/dist/components/ui/frontmatter-badges.d.ts.map +1 -1
  108. package/dist/components/ui/frontmatter-badges.js +41 -15
  109. package/dist/components/ui/frontmatter.js +1 -1
  110. package/dist/components/ui/hash-link.d.ts +56 -0
  111. package/dist/components/ui/hash-link.d.ts.map +1 -0
  112. package/dist/components/ui/hash-link.js +83 -0
  113. package/dist/components/ui/image.d.ts +5 -2
  114. package/dist/components/ui/image.d.ts.map +1 -1
  115. package/dist/components/ui/image.js +10 -8
  116. package/dist/components/ui/index.d.ts +10 -2
  117. package/dist/components/ui/index.d.ts.map +1 -1
  118. package/dist/components/ui/index.js +9 -2
  119. package/dist/components/ui/keywords.d.ts +4 -0
  120. package/dist/components/ui/keywords.d.ts.map +1 -0
  121. package/dist/components/ui/keywords.js +18 -0
  122. package/dist/components/ui/label.d.ts +4 -0
  123. package/dist/components/ui/label.d.ts.map +1 -0
  124. package/dist/components/ui/label.js +6 -0
  125. package/dist/components/ui/license-description.d.ts.map +1 -1
  126. package/dist/components/ui/license-description.js +8 -5
  127. package/dist/components/ui/license-frontmatter.d.ts.map +1 -1
  128. package/dist/components/ui/license-frontmatter.js +14 -3
  129. package/dist/components/ui/lightbox-container.d.ts.map +1 -1
  130. package/dist/components/ui/lightbox-container.js +2 -2
  131. package/dist/components/ui/lightbox.d.ts +3 -1
  132. package/dist/components/ui/lightbox.d.ts.map +1 -1
  133. package/dist/components/ui/lightbox.js +155 -25
  134. package/dist/components/ui/link-card.d.ts +2 -1
  135. package/dist/components/ui/link-card.d.ts.map +1 -1
  136. package/dist/components/ui/link-card.js +2 -2
  137. package/dist/components/ui/pagination.d.ts +15 -0
  138. package/dist/components/ui/pagination.d.ts.map +1 -0
  139. package/dist/components/ui/pagination.js +31 -0
  140. package/dist/components/ui/popover.js +1 -1
  141. package/dist/components/ui/search.d.ts +2 -1
  142. package/dist/components/ui/search.d.ts.map +1 -1
  143. package/dist/components/ui/search.js +24 -8
  144. package/dist/components/ui/select.d.ts +16 -0
  145. package/dist/components/ui/select.d.ts.map +1 -0
  146. package/dist/components/ui/select.js +38 -0
  147. package/dist/components/ui/separator.js +1 -1
  148. package/dist/components/ui/sidebar.d.ts +2 -12
  149. package/dist/components/ui/sidebar.d.ts.map +1 -1
  150. package/dist/components/ui/sidebar.js +2 -34
  151. package/dist/components/ui/tooltip.d.ts +4 -2
  152. package/dist/components/ui/tooltip.d.ts.map +1 -1
  153. package/dist/components/ui/tooltip.js +5 -4
  154. package/dist/components/ui/types.d.ts +9 -8
  155. package/dist/components/ui/types.d.ts.map +1 -1
  156. package/dist/components/ui/types.js +1 -0
  157. package/dist/lib/dedupeAbbreviations.d.ts +10 -0
  158. package/dist/lib/dedupeAbbreviations.d.ts.map +1 -0
  159. package/dist/lib/dedupeAbbreviations.js +36 -0
  160. package/dist/lib/knownParts.d.ts +18 -0
  161. package/dist/lib/knownParts.d.ts.map +1 -1
  162. package/dist/lib/knownParts.js +38 -1
  163. package/package.json +12 -9
  164. package/dist/components/providers/types.d.ts +0 -30
  165. package/dist/components/providers/types.d.ts.map +0 -1
  166. package/dist/components/providers/types.js +0 -1
@@ -2,8 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from 'react';
3
3
  import { cn } from '../../lib/utils';
4
4
  import { useLightbox } from '../providers/lightbox-provider';
5
- import { ZoomIn } from 'lucide-react';
6
- import { SimpleTooltip } from './tooltip';
5
+ import { OverlayInteractionDepthContext } from '../providers/overlay-depth';
7
6
  function getStyleValue(width) {
8
7
  if (typeof width === 'number' && Number.isNaN(width)) {
9
8
  // If it is nan, return undefined.
@@ -46,7 +45,7 @@ function Video({ ref, className, src, urlSource, align = 'center', width, height
46
45
  // For autoplay, the element needs to be muted to actually start!
47
46
  muted: true, "webkit-playsinline": "true", playsInline: true, loop: true, onClick: onClick, onLoadedData: onLoadedData }));
48
47
  }
49
- export function Picture({ ref, className, src, srcOptimized, urlSource, align = 'center', alt, width, height, onClick, style, onLoad, onLoadedData, }) {
48
+ export function Picture({ ref, className, src, srcOptimized, urlSource, align = 'center', alt, width, height, onClick, style, onLoad, onLoadedData, onError, }) {
50
49
  if (src.endsWith('.mp4') || urlSource?.endsWith('.mp4')) {
51
50
  return (_jsx(Video, { ref: ref, className: className, width: width, height: height, align: align, src: src, urlSource: urlSource, onClick: onClick, style: style, onLoadedData: onLoadedData }));
52
51
  }
@@ -57,27 +56,30 @@ export function Picture({ ref, className, src, srcOptimized, urlSource, align =
57
56
  ...style,
58
57
  }, src: src, alt: alt, "data-canonical-url": urlSource,
59
58
  // Don't set className if nested under picture
60
- className: cn(srcOptimized ? undefined : className, 'bg-background'), onClick: onClick, draggable: false, onLoad: onLoad }));
59
+ className: cn(srcOptimized ? undefined : className, 'bg-background'), onClick: onClick, draggable: false, onLoad: onLoad, onError: onError }));
61
60
  if (!srcOptimized)
62
61
  return image;
63
62
  return (_jsxs("picture", { className: className, children: [_jsx("source", { srcSet: srcOptimized, type: "image/webp" }), image] }));
64
63
  }
65
- export function Image({ src, srcOptimized, urlSource, alt, className, showLightbox = true, width, height, align = 'center', caption, }) {
64
+ export function Image({ src, srcOptimized, urlSource, alt, className, showLightbox = true, width, height, align = 'center', caption, onLightboxOpen, onError, }) {
66
65
  const { openLightbox } = useLightbox();
66
+ const openingOverlayDepth = React.useContext(OverlayInteractionDepthContext);
67
67
  const handleClick = () => {
68
68
  if (!showLightbox)
69
69
  return;
70
+ onLightboxOpen?.();
70
71
  const imageData = {
71
72
  src,
72
73
  srcOptimized,
73
74
  urlSource,
74
75
  alt,
75
76
  caption,
77
+ openingOverlayDepth,
76
78
  };
77
79
  openLightbox(imageData);
78
80
  };
79
81
  const isClickable = showLightbox;
80
- return (_jsxs("div", { className: cn('overflow-hidden relative group/image', {
81
- 'transition-opacity cursor-pointer hover:opacity-90': isClickable,
82
- }, className), onClick: isClickable ? handleClick : undefined, children: [_jsx(Picture, { src: src, srcOptimized: srcOptimized, urlSource: urlSource, alt: alt, width: width, height: height, align: align, onClick: isClickable ? handleClick : undefined }), isClickable && (_jsx(SimpleTooltip, { title: "Click to enlarge", children: _jsx(ZoomIn, { className: "absolute right-1 bottom-1 w-4 h-4 opacity-0 transition-opacity group-hover/image:opacity-100" }) }))] }));
82
+ return (_jsx(Picture, { src: src, srcOptimized: srcOptimized, urlSource: urlSource, alt: alt, width: width, height: height, align: align, onClick: isClickable ? handleClick : undefined, onError: onError, className: cn({
83
+ 'cursor-zoom-in': isClickable,
84
+ }, className) }));
83
85
  }
@@ -1,5 +1,9 @@
1
1
  export { Button, buttonVariants } from './button';
2
2
  export { Input } from './input';
3
+ export { Label } from './label';
4
+ export { Calendar, type CalendarProps, type DateRange } from './calendar';
5
+ export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, } from './select';
6
+ export { Pagination, PaginationContent, PaginationLink, PaginationItem, PaginationPrevious, PaginationNext, PaginationEllipsis, } from './pagination';
3
7
  export { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DialogClose, DialogOverlay, DialogPortal, } from './dialog';
4
8
  export { Popover, PopoverContent, PopoverTrigger } from './popover';
5
9
  export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, SimpleTooltip } from './tooltip';
@@ -25,13 +29,14 @@ export { DocumentOutline } from './document-outline';
25
29
  export { FooterLinks } from './footer-links';
26
30
  export { Footnotes } from './footnotes';
27
31
  export { Abbreviations } from './abbreviations';
32
+ export { Keywords } from './keywords';
28
33
  export { Frontmatter } from './frontmatter';
29
34
  export { DateString, TwitterLink, GitHubLink, OpenAccessBadge, OrcidBadge, DoiLink, } from './frontmatter-badges';
30
35
  export { CreativeCommonsBadge, LicenseBadges } from './license-frontmatter';
31
36
  export { PageCards } from './PageCards';
32
- export { Sidebar } from './sidebar';
37
+ export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar, } from './sidebar';
33
38
  export { ThemeButton } from './theme-button';
34
- export { SkipTo, createSkipToTargets } from './accessibility-skip-to';
39
+ export { SkipTo, createSkipToTargets, SkipToAnchor } from './accessibility-skip-to';
35
40
  export { ArticleCard } from './article-card';
36
41
  export { ArticleBar, AuthorsList } from './article-bar';
37
42
  export { Bibliography } from './bibliography';
@@ -40,6 +45,9 @@ export { DataAvailability } from './data-availability';
40
45
  export { LicenseDescription } from './license-description';
41
46
  export { PART_IDS } from './types';
42
47
  export { LinkCard } from './link-card';
48
+ export { Arrow, ArrowLink, LongArrowIcon } from './arrow';
49
+ export { HashLink, scrollToElement } from './hash-link';
50
+ export type { HashLinkProps, HashLinkAnalytics } from './hash-link';
43
51
  export { Lightbox } from './lightbox';
44
52
  export { LightboxContainer } from './lightbox-container';
45
53
  export { Image } from './image';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ui/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ui/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,10 @@
1
1
  // Basic UI Components
2
2
  export { Button, buttonVariants } from './button';
3
3
  export { Input } from './input';
4
+ export { Label } from './label';
5
+ export { Calendar } from './calendar';
6
+ export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, } from './select';
7
+ export { Pagination, PaginationContent, PaginationLink, PaginationItem, PaginationPrevious, PaginationNext, PaginationEllipsis, } from './pagination';
4
8
  export { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DialogClose, DialogOverlay, DialogPortal, } from './dialog';
5
9
  export { Popover, PopoverContent, PopoverTrigger } from './popover';
6
10
  export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, SimpleTooltip } from './tooltip';
@@ -27,13 +31,14 @@ export { DocumentOutline } from './document-outline';
27
31
  export { FooterLinks } from './footer-links';
28
32
  export { Footnotes } from './footnotes';
29
33
  export { Abbreviations } from './abbreviations';
34
+ export { Keywords } from './keywords';
30
35
  export { Frontmatter } from './frontmatter';
31
36
  export { DateString, TwitterLink, GitHubLink, OpenAccessBadge, OrcidBadge, DoiLink, } from './frontmatter-badges';
32
37
  export { CreativeCommonsBadge, LicenseBadges } from './license-frontmatter';
33
38
  export { PageCards } from './PageCards';
34
- export { Sidebar } from './sidebar';
39
+ export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar, } from './sidebar';
35
40
  export { ThemeButton } from './theme-button';
36
- export { SkipTo, createSkipToTargets } from './accessibility-skip-to';
41
+ export { SkipTo, createSkipToTargets, SkipToAnchor } from './accessibility-skip-to';
37
42
  export { ArticleCard } from './article-card';
38
43
  export { ArticleBar, AuthorsList } from './article-bar';
39
44
  export { Bibliography } from './bibliography';
@@ -42,6 +47,8 @@ export { DataAvailability } from './data-availability';
42
47
  export { LicenseDescription } from './license-description';
43
48
  export { PART_IDS } from './types';
44
49
  export { LinkCard } from './link-card';
50
+ export { Arrow, ArrowLink, LongArrowIcon } from './arrow';
51
+ export { HashLink, scrollToElement } from './hash-link';
45
52
  // Lightbox Components
46
53
  export { Lightbox } from './lightbox';
47
54
  export { LightboxContainer } from './lightbox-container';
@@ -0,0 +1,4 @@
1
+ export declare function Keywords({ className }: {
2
+ className?: string;
3
+ }): import("react/jsx-runtime").JSX.Element | null;
4
+ //# sourceMappingURL=keywords.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keywords.d.ts","sourceRoot":"","sources":["../../../src/components/ui/keywords.tsx"],"names":[],"mappings":"AAYA,wBAAgB,QAAQ,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,kDAyB7D"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useFrontmatter } from '@myst-theme/providers';
3
+ import { HashLink } from 'myst-to-react';
4
+ import { cn } from '../../lib/utils';
5
+ import { PART_IDS } from './types';
6
+ function useKeywords() {
7
+ const frontmatter = useFrontmatter();
8
+ const keywords = frontmatter?.keywords;
9
+ if (!keywords || keywords.length === 0)
10
+ return undefined;
11
+ return keywords;
12
+ }
13
+ export function Keywords({ className }) {
14
+ const keywords = useKeywords();
15
+ if (!keywords)
16
+ return null;
17
+ return (_jsxs("section", { id: PART_IDS.keywords, className: cn('min-w-full prose dark:prose-invert prose-sm', className), children: [_jsxs("header", { className: "text-lg font-semibold text-stone-900 dark:text-white group", children: ["Keywords", _jsx(HashLink, { id: PART_IDS.keywords, title: "Link to Keywords", hover: true, className: "ml-2" })] }), _jsx("div", { className: cn('pl-3 mb-8'), children: _jsx("ul", { className: "flex flex-wrap gap-1.5 p-0 m-0 list-none", children: keywords.map((keyword) => (_jsx("li", { className: "p-0 m-0", children: _jsx("span", { className: "inline-block rounded-full bg-stone-100 dark:bg-stone-800 px-2.5 py-0.5 text-xs font-medium text-stone-700 dark:text-stone-200", children: keyword }) }, keyword))) }) })] }));
18
+ }
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ declare const Label: React.ForwardRefExoticComponent<React.LabelHTMLAttributes<HTMLLabelElement> & React.RefAttributes<HTMLLabelElement>>;
3
+ export { Label };
4
+ //# sourceMappingURL=label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../../src/components/ui/label.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,QAAA,MAAM,KAAK,sHAWV,CAAC;AAGF,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { cn } from '../../lib/utils';
4
+ const Label = React.forwardRef(({ className, ...props }, ref) => (_jsx("label", { ref: ref, className: cn('text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70', className), ...props })));
5
+ Label.displayName = 'Label';
6
+ export { Label };
@@ -1 +1 @@
1
- {"version":3,"file":"license-description.d.ts","sourceRoot":"","sources":["../../../src/components/ui/license-description.tsx"],"names":[],"mappings":"AAuDA,wBAAgB,kBAAkB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,kDAsEvE"}
1
+ {"version":3,"file":"license-description.d.ts","sourceRoot":"","sources":["../../../src/components/ui/license-description.tsx"],"names":[],"mappings":"AAuDA,wBAAgB,kBAAkB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,kDA2EvE"}
@@ -5,7 +5,7 @@ import { cn } from '../../lib/utils';
5
5
  import { PART_IDS } from './types';
6
6
  function createCitation(authors, showYear = true, date) {
7
7
  if (!authors || authors.length === 0)
8
- return null;
8
+ return 'the Authors';
9
9
  const getLastName = (author) => author.nameParsed?.family
10
10
  ? author.nameParsed?.family
11
11
  : author.name?.split(' ').filter(Boolean).pop() || author.name;
@@ -20,7 +20,7 @@ function createCitation(authors, showYear = true, date) {
20
20
  else if (authors.length > 2) {
21
21
  return `${getLastName(authors[0])} et al.${yearString}`;
22
22
  }
23
- return null;
23
+ return 'the Authors';
24
24
  }
25
25
  function getLicenseDetails(licenseId, authorCount) {
26
26
  if (!licenseId)
@@ -48,6 +48,8 @@ export function LicenseDescription({ className }) {
48
48
  const frontmatter = useFrontmatter();
49
49
  // Handle both object and string license types
50
50
  const license = frontmatter?.license?.content;
51
+ const hasLicenseTerms = !!(license?.id || license?.name || license?.url);
52
+ const licenseNote = license?.note;
51
53
  if (!license && !frontmatter?.authors)
52
54
  return null;
53
55
  const year = frontmatter?.date
@@ -57,7 +59,8 @@ export function LicenseDescription({ className }) {
57
59
  const authorCount = frontmatter?.authors?.length;
58
60
  const licenseDetails = getLicenseDetails(license?.id, authorCount);
59
61
  const isOpenAccess = frontmatter?.open_access === true;
60
- return (_jsxs("section", { id: PART_IDS.license, className: cn('min-w-full prose dark:prose-invert prose-sm', className), children: [_jsxs("header", { className: "text-lg font-semibold text-stone-900 dark:text-white group", children: ["License", _jsx(HashLink, { id: PART_IDS.license, title: "Link to Article License", hover: true, className: "ml-2" })] }), _jsx("div", { className: cn('pl-3 mb-8 text-xs text-stone-500 dark:text-stone-300'), children: _jsxs("p", { children: [frontmatter?.copyright
61
- ? frontmatter.copyright
62
- : `Copyright © ${year} ${citation}${citation?.endsWith('.') ? '' : '.'}`, license ? (_jsxs(_Fragment, { children: [' ', "This", ' ', isOpenAccess ? (_jsxs(_Fragment, { children: ["is an", ' ', _jsx("a", { href: "https://en.wikipedia.org/wiki/Open_access", target: "_blank", rel: "noopener noreferrer", children: "open-access article" })] })) : ('article is'), ' ', "distributed under the terms of the", ' ', license.url ? (_jsxs("a", { href: license.url, className: "underline hover:text-stone-700 dark:hover:text-stone-100", target: "_blank", rel: "noopener noreferrer", children: [license.name || license.id, " license"] })) : (`${license.name || license.id} license`), licenseDetails, "."] })) : isOpenAccess ? (_jsx(_Fragment, { children: " This article is open-access." })) : null] }) })] }));
62
+ const copyright = frontmatter?.copyright;
63
+ return (_jsxs("section", { id: PART_IDS.license, className: cn('min-w-full prose dark:prose-invert prose-sm', className), children: [_jsxs("header", { className: "text-lg font-semibold text-stone-900 dark:text-white group", children: [copyright ? 'Copyright & License' : 'License', _jsx(HashLink, { id: PART_IDS.license, title: "Link to Article License", hover: true, className: "ml-2" })] }), _jsx("div", { className: cn('pl-3 mb-8 text-xs text-stone-500 dark:text-stone-300'), children: _jsxs("p", { children: [copyright
64
+ ? copyright
65
+ : `Copyright © ${year} ${citation}${citation?.endsWith('.') ? '' : '.'}`, hasLicenseTerms ? (_jsxs(_Fragment, { children: [' ', "This", ' ', isOpenAccess ? (_jsxs(_Fragment, { children: ["is an", ' ', _jsx("a", { href: "https://en.wikipedia.org/wiki/Open_access", target: "_blank", rel: "noopener noreferrer", children: "open-access article" })] })) : ('article is'), ' ', "distributed under the terms of the", ' ', license.url ? (_jsxs("a", { href: license.url, className: "underline hover:text-stone-700 dark:hover:text-stone-100", target: "_blank", rel: "noopener noreferrer", children: [license.name || license.id, " license"] })) : (`${license.name || license.id} license`), licenseDetails, "."] })) : licenseNote ? (_jsxs(_Fragment, { children: [" ", licenseNote] })) : isOpenAccess ? (_jsx(_Fragment, { children: " This article is open-access." })) : null] }) })] }));
63
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"license-frontmatter.d.ts","sourceRoot":"","sources":["../../../src/components/ui/license-frontmatter.tsx"],"names":[],"mappings":"AAcA,KAAK,OAAO,GAAG;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,QAAa,EACb,SAAS,GACV,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,kDA0DA;AAiDD,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,SAAS,GACV,EAAE;IACD,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;KAAE,CAAC;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,kDAmBA"}
1
+ {"version":3,"file":"license-frontmatter.d.ts","sourceRoot":"","sources":["../../../src/components/ui/license-frontmatter.tsx"],"names":[],"mappings":"AAeA,KAAK,OAAO,GAAG;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,QAAa,EACb,SAAS,GACV,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,kDAmDA;AA0DD,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,SAAS,GACV,EAAE;IACD,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;KAAE,CAAC;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,kDAmBA"}
@@ -3,7 +3,8 @@ import { CcByIcon, CcIcon, CcNcIcon, CcNdIcon, CcSaIcon, CcZeroIcon, OsiIcon, }
3
3
  import { cn } from '../../lib/utils';
4
4
  import { ScaleIcon } from 'lucide-react';
5
5
  import { PART_IDS } from './types';
6
- import { HashLink } from 'myst-to-react';
6
+ import { HashLink } from './hash-link';
7
+ import { SimpleTooltip } from './tooltip';
7
8
  export function CreativeCommonsBadge({ license, preamble = '', className, }) {
8
9
  if (!license.id)
9
10
  return null;
@@ -12,7 +13,10 @@ export function CreativeCommonsBadge({ license, preamble = '', className, }) {
12
13
  return null;
13
14
  const title = `${preamble}${license.name ?? license.title} (${license.id})`;
14
15
  const kind = match[1].toUpperCase();
15
- return (_jsxs(HashLink, { id: PART_IDS.license, title: title, hover: false, className: cn('opacity-50 hover:opacity-100 text-inherit hover:text-inherit', className), "aria-label": title, scrollBehavior: "instant", children: [_jsx(CcIcon, { width: "1.25rem", height: "1.25rem", className: "inline-block mx-1", title: title }), (kind.startsWith('CC0') || kind.startsWith('CC-0') || kind.includes('ZERO')) && (_jsx(CcZeroIcon, { width: "1.25rem", height: "1.25rem", className: "inline-block mr-1", title: "CC0: Work is in the worldwide public domain" })), kind.includes('BY') && (_jsx(CcByIcon, { width: "1.25rem", height: "1.25rem", className: "inline-block mr-1", title: "Credit must be given to the creator" })), kind.includes('NC') && (_jsx(CcNcIcon, { width: "1.25rem", height: "1.25rem", className: "inline-block mr-1", title: "Only noncommercial uses of the work are permitted" })), kind.includes('SA') && (_jsx(CcSaIcon, { width: "1.25rem", height: "1.25rem", className: "inline-block mr-1", title: "Adaptations must be shared under the same terms" })), kind.includes('ND') && (_jsx(CcNdIcon, { width: "1.25rem", height: "1.25rem", className: "inline-block mr-1", title: "No derivatives or adaptations of the work are permitted" }))] }));
16
+ return (_jsxs(HashLink, { id: PART_IDS.license, title: title, hover: false, canSelectText: true, className: cn('opacity-50 hover:opacity-100 text-inherit hover:text-inherit', className), "aria-label": title, scrollBehavior: "instant", analyticsEvent: "article_license_anchor_clicked", analytics: {
17
+ linkKind: 'cc_license_badge',
18
+ properties: { surface: 'article_bar', licenseId: license.id, licenseKind: 'cc' },
19
+ }, children: [_jsx(SimpleTooltip, { title: title, children: _jsx(CcIcon, { width: "1.25rem", height: "1.25rem", className: "inline-block mx-1" }) }), (kind.startsWith('CC0') || kind.startsWith('CC-0') || kind.includes('ZERO')) && (_jsx(SimpleTooltip, { title: "CC0: Work is in the worldwide public domain", children: _jsx(CcZeroIcon, { width: "1.25rem", height: "1.25rem", className: "inline-block mr-1" }) })), kind.includes('BY') && (_jsx(SimpleTooltip, { title: "Credit must be given to the creator", children: _jsx(CcByIcon, { width: "1.25rem", height: "1.25rem", className: "inline-block mr-1" }) })), kind.includes('NC') && (_jsx(SimpleTooltip, { title: "Only noncommercial uses of the work are permitted", children: _jsx(CcNcIcon, { width: "1.25rem", height: "1.25rem", className: "inline-block mr-1" }) })), kind.includes('SA') && (_jsx(SimpleTooltip, { title: "Adaptations must be shared under the same terms", children: _jsx(CcSaIcon, { width: "1.25rem", height: "1.25rem", className: "inline-block mr-1" }) })), kind.includes('ND') && (_jsx(SimpleTooltip, { title: "No derivatives or adaptations of the work are permitted", children: _jsx(CcNdIcon, { width: "1.25rem", height: "1.25rem", className: "inline-block mr-1" }) }))] }));
16
20
  }
17
21
  function SingleLicenseBadge({ license: possibleLicense, preamble = '', className, }) {
18
22
  if (!possibleLicense)
@@ -22,10 +26,17 @@ function SingleLicenseBadge({ license: possibleLicense, preamble = '', className
22
26
  : possibleLicense;
23
27
  if (!license || Object.keys(license).length === 0)
24
28
  return null;
29
+ // Without an id/name/url there is nothing meaningful to badge
30
+ if (!license.id && !license.name && !license.url)
31
+ return null;
25
32
  if (license.CC) {
26
33
  return _jsx(CreativeCommonsBadge, { license: license, preamble: preamble, className: className });
27
34
  }
28
- return (_jsxs(HashLink, { id: PART_IDS.license, title: `${preamble}${license.name ?? license.title} (${license.id})`, hover: false, className: "text-inherit hover:text-inherit", scrollBehavior: "instant", children: [!license.osi && (_jsx(ScaleIcon, { width: "1.25rem", height: "1.25rem", className: cn('inline-block mx-1 opacity-60 hover:opacity-100', className) })), license.osi && (_jsx(OsiIcon, { width: "1.25rem", height: "1.25rem", className: cn('mx-1 inline-block opacity-60 hover:opacity-100 hover:text-[#599F46]', className) }))] }));
35
+ const licenseKind = license.osi ? 'osi' : 'generic';
36
+ return (_jsxs(HashLink, { id: PART_IDS.license, title: `${preamble}${license.name ?? license.title} (${license.id})`, hover: false, canSelectText: true, className: "text-inherit hover:text-inherit", scrollBehavior: "instant", analyticsEvent: "article_license_anchor_clicked", analytics: {
37
+ linkKind: `${licenseKind}_license_badge`,
38
+ properties: { surface: 'article_bar', licenseId: license.id, licenseKind },
39
+ }, children: [!license.osi && (_jsx(ScaleIcon, { width: "1.25rem", height: "1.25rem", className: cn('inline-block mx-1 opacity-60 hover:opacity-100', className) })), license.osi && (_jsx(OsiIcon, { width: "1.25rem", height: "1.25rem", className: cn('mx-1 inline-block opacity-60 hover:opacity-100 hover:text-[#599F46]', className) }))] }));
29
40
  }
30
41
  export function LicenseBadges({ license, className, }) {
31
42
  if (!license)
@@ -1 +1 @@
1
- {"version":3,"file":"lightbox-container.d.ts","sourceRoot":"","sources":["../../../src/components/ui/lightbox-container.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAExE,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACjC;AA2BD,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,cAAqB,EACrB,QAAe,EACf,SAAc,GACf,EAAE,sBAAsB,2CAOxB"}
1
+ {"version":3,"file":"lightbox-container.d.ts","sourceRoot":"","sources":["../../../src/components/ui/lightbox-container.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAExE,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACjC;AAsCD,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,cAAqB,EACrB,QAAe,EACf,SAAc,GACf,EAAE,sBAAsB,2CAOxB"}
@@ -3,10 +3,10 @@ import * as React from 'react';
3
3
  import { LightboxProvider, useLightbox } from '../providers/lightbox-provider';
4
4
  import { Lightbox } from './lightbox';
5
5
  function LightboxContent({ showNavigation = true, showZoom = true, }) {
6
- const { isOpen, currentImage, closeLightbox, navigate, hasNext, hasPrev } = useLightbox();
6
+ const { isOpen, currentImage, closeLightbox, navigate, hasNext, hasPrev, currentIndex, imageList, } = useLightbox();
7
7
  if (!currentImage)
8
8
  return null;
9
- return (_jsx(Lightbox, { isOpen: isOpen, onClose: closeLightbox, image: currentImage, onNavigate: navigate, hasNext: hasNext, hasPrev: hasPrev, showNavigation: showNavigation, showZoom: showZoom }));
9
+ return (_jsx(Lightbox, { isOpen: isOpen, onClose: closeLightbox, image: currentImage, onNavigate: navigate, hasNext: hasNext, hasPrev: hasPrev, showNavigation: showNavigation, showZoom: showZoom, currentIndex: currentIndex, imageCount: imageList.length }));
10
10
  }
11
11
  export function LightboxContainer({ children, showNavigation = true, showZoom = true, imageList = [], }) {
12
12
  return (_jsxs(LightboxProvider, { imageList: imageList, children: [children, _jsx(LightboxContent, { showNavigation: showNavigation, showZoom: showZoom })] }));
@@ -11,7 +11,9 @@ interface LightboxProps {
11
11
  className?: string;
12
12
  minZoom?: number;
13
13
  maxZoom?: number;
14
+ currentIndex?: number;
15
+ imageCount?: number;
14
16
  }
15
- export declare function Lightbox({ isOpen, onClose, image, onNavigate, hasNext, hasPrev, showNavigation, showZoom, className, minZoom, maxZoom, }: LightboxProps): import("react/jsx-runtime").JSX.Element;
17
+ export declare function Lightbox({ isOpen, onClose, image, onNavigate, hasNext, hasPrev, showNavigation, showZoom, className, minZoom, maxZoom, currentIndex, imageCount, }: LightboxProps): import("react/jsx-runtime").JSX.Element;
16
18
  export {};
17
19
  //# sourceMappingURL=lightbox.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lightbox.d.ts","sourceRoot":"","sources":["../../../src/components/ui/lightbox.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAIxE,UAAU,aAAa;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,iBAAiB,CAAC;IACzB,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,QAAQ,CAAC,EACvB,MAAM,EACN,OAAO,EACP,KAAK,EACL,UAAU,EACV,OAAe,EACf,OAAe,EACf,cAAqB,EACrB,QAAe,EACf,SAAS,EACT,OAAa,EACb,OAAW,GACZ,EAAE,aAAa,2CA2Qf"}
1
+ {"version":3,"file":"lightbox.d.ts","sourceRoot":"","sources":["../../../src/components/ui/lightbox.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AA2BxE,UAAU,aAAa;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,iBAAiB,CAAC;IACzB,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,QAAQ,CAAC,EACvB,MAAM,EACN,OAAO,EACP,KAAK,EACL,UAAU,EACV,OAAe,EACf,OAAe,EACf,cAAqB,EACrB,QAAe,EACf,SAAS,EACT,OAAa,EACb,OAAW,EACX,YAAY,EACZ,UAAU,GACX,EAAE,aAAa,2CAwaf"}