components-svelte 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +103 -0
  3. package/dist/components/Search.svelte +320 -0
  4. package/dist/components/Search.svelte.d.ts +31 -0
  5. package/dist/components/SearchButton.svelte +82 -0
  6. package/dist/components/SearchButton.svelte.d.ts +13 -0
  7. package/dist/components/SearchProvider.svelte +87 -0
  8. package/dist/components/SearchProvider.svelte.d.ts +17 -0
  9. package/dist/components/accordion/Accordion.svelte +150 -0
  10. package/dist/components/accordion/Accordion.svelte.d.ts +25 -0
  11. package/dist/components/accordion/AccordionCover.svelte +68 -0
  12. package/dist/components/accordion/AccordionCover.svelte.d.ts +13 -0
  13. package/dist/components/accordion/AccordionGroup.svelte +23 -0
  14. package/dist/components/accordion/AccordionGroup.svelte.d.ts +8 -0
  15. package/dist/components/accordion/accordion-url-utils.d.ts +4 -0
  16. package/dist/components/accordion/accordion-url-utils.js +48 -0
  17. package/dist/components/accordion/index.d.ts +29 -0
  18. package/dist/components/accordion/index.js +6 -0
  19. package/dist/components/badge/Badge.svelte +152 -0
  20. package/dist/components/badge/Badge.svelte.d.ts +23 -0
  21. package/dist/components/badge/index.d.ts +1 -0
  22. package/dist/components/badge/index.js +2 -0
  23. package/dist/components/callout/Callout.svelte +317 -0
  24. package/dist/components/callout/Callout.svelte.d.ts +17 -0
  25. package/dist/components/callout/Check.svelte +9 -0
  26. package/dist/components/callout/Check.svelte.d.ts +4 -0
  27. package/dist/components/callout/Danger.svelte +9 -0
  28. package/dist/components/callout/Danger.svelte.d.ts +4 -0
  29. package/dist/components/callout/Info.svelte +9 -0
  30. package/dist/components/callout/Info.svelte.d.ts +4 -0
  31. package/dist/components/callout/Note.svelte +9 -0
  32. package/dist/components/callout/Note.svelte.d.ts +4 -0
  33. package/dist/components/callout/Tip.svelte +9 -0
  34. package/dist/components/callout/Tip.svelte.d.ts +4 -0
  35. package/dist/components/callout/Warning.svelte +9 -0
  36. package/dist/components/callout/Warning.svelte.d.ts +4 -0
  37. package/dist/components/callout/index.d.ts +8 -0
  38. package/dist/components/callout/index.js +8 -0
  39. package/dist/components/card/Card.svelte +172 -0
  40. package/dist/components/card/Card.svelte.d.ts +21 -0
  41. package/dist/components/card/index.d.ts +3 -0
  42. package/dist/components/card/index.js +2 -0
  43. package/dist/components/code-block/BaseCodeBlock.svelte +249 -0
  44. package/dist/components/code-block/BaseCodeBlock.svelte.d.ts +10 -0
  45. package/dist/components/code-block/CodeBlock.svelte +185 -0
  46. package/dist/components/code-block/CodeBlock.svelte.d.ts +5 -0
  47. package/dist/components/code-block/CodeFooter.svelte +34 -0
  48. package/dist/components/code-block/CodeFooter.svelte.d.ts +8 -0
  49. package/dist/components/code-block/CodeHeader.svelte +52 -0
  50. package/dist/components/code-block/CodeHeader.svelte.d.ts +11 -0
  51. package/dist/components/code-block/CopyToClipboardButton.svelte +124 -0
  52. package/dist/components/code-block/CopyToClipboardButton.svelte.d.ts +4 -0
  53. package/dist/components/code-block/index.d.ts +10 -0
  54. package/dist/components/code-block/index.js +5 -0
  55. package/dist/components/code-block/types.d.ts +85 -0
  56. package/dist/components/code-block/types.js +1 -0
  57. package/dist/components/code-group/CodeGroup.svelte +327 -0
  58. package/dist/components/code-group/CodeGroup.svelte.d.ts +24 -0
  59. package/dist/components/code-group/CodeGroupSelect.svelte +170 -0
  60. package/dist/components/code-group/CodeGroupSelect.svelte.d.ts +25 -0
  61. package/dist/components/code-group/CodeSelectDropdown.svelte +74 -0
  62. package/dist/components/code-group/CodeSelectDropdown.svelte.d.ts +9 -0
  63. package/dist/components/code-group/LanguageDropdown.svelte +134 -0
  64. package/dist/components/code-group/LanguageDropdown.svelte.d.ts +11 -0
  65. package/dist/components/code-group/LanguageIcon.svelte +24 -0
  66. package/dist/components/code-group/LanguageIcon.svelte.d.ts +8 -0
  67. package/dist/components/code-group/context.d.ts +14 -0
  68. package/dist/components/code-group/context.js +2 -0
  69. package/dist/components/code-group/index.d.ts +8 -0
  70. package/dist/components/code-group/index.js +4 -0
  71. package/dist/components/color/Color.svelte +34 -0
  72. package/dist/components/color/Color.svelte.d.ts +10 -0
  73. package/dist/components/color/ColorItem.svelte +140 -0
  74. package/dist/components/color/ColorItem.svelte.d.ts +10 -0
  75. package/dist/components/color/ColorRow.svelte +27 -0
  76. package/dist/components/color/ColorRow.svelte.d.ts +8 -0
  77. package/dist/components/color/index.d.ts +1 -0
  78. package/dist/components/color/index.js +8 -0
  79. package/dist/components/columns/Box.svelte +15 -0
  80. package/dist/components/columns/Box.svelte.d.ts +7 -0
  81. package/dist/components/columns/Columns.svelte +31 -0
  82. package/dist/components/columns/Columns.svelte.d.ts +10 -0
  83. package/dist/components/columns/constants.d.ts +5 -0
  84. package/dist/components/columns/constants.js +3 -0
  85. package/dist/components/columns/index.d.ts +5 -0
  86. package/dist/components/columns/index.js +3 -0
  87. package/dist/components/expandable/Expandable.svelte +182 -0
  88. package/dist/components/expandable/Expandable.svelte.d.ts +22 -0
  89. package/dist/components/expandable/index.d.ts +3 -0
  90. package/dist/components/expandable/index.js +2 -0
  91. package/dist/components/frame/Frame.svelte +118 -0
  92. package/dist/components/frame/Frame.svelte.d.ts +15 -0
  93. package/dist/components/frame/index.d.ts +3 -0
  94. package/dist/components/frame/index.js +2 -0
  95. package/dist/components/icon/Icon.svelte +129 -0
  96. package/dist/components/icon/Icon.svelte.d.ts +18 -0
  97. package/dist/components/icon/index.d.ts +2 -0
  98. package/dist/components/icon/index.js +1 -0
  99. package/dist/components/index.d.ts +22 -0
  100. package/dist/components/index.js +22 -0
  101. package/dist/components/mermaid/Mermaid.svelte +181 -0
  102. package/dist/components/mermaid/Mermaid.svelte.d.ts +11 -0
  103. package/dist/components/mermaid/ZoomControls.svelte +74 -0
  104. package/dist/components/mermaid/ZoomControls.svelte.d.ts +12 -0
  105. package/dist/components/mermaid/index.d.ts +7 -0
  106. package/dist/components/mermaid/index.js +4 -0
  107. package/dist/components/mermaid/use-pan-zoom.svelte.d.ts +11 -0
  108. package/dist/components/mermaid/use-pan-zoom.svelte.js +41 -0
  109. package/dist/components/panel/Panel.svelte +27 -0
  110. package/dist/components/panel/Panel.svelte.d.ts +9 -0
  111. package/dist/components/panel/index.d.ts +3 -0
  112. package/dist/components/panel/index.js +2 -0
  113. package/dist/components/property/DeprecatedPill.svelte +16 -0
  114. package/dist/components/property/DeprecatedPill.svelte.d.ts +6 -0
  115. package/dist/components/property/InfoPill.svelte +32 -0
  116. package/dist/components/property/InfoPill.svelte.d.ts +10 -0
  117. package/dist/components/property/ParamHead.svelte +188 -0
  118. package/dist/components/property/ParamHead.svelte.d.ts +22 -0
  119. package/dist/components/property/Property.svelte +123 -0
  120. package/dist/components/property/Property.svelte.d.ts +24 -0
  121. package/dist/components/property/RequiredPill.svelte +16 -0
  122. package/dist/components/property/RequiredPill.svelte.d.ts +6 -0
  123. package/dist/components/property/index.d.ts +11 -0
  124. package/dist/components/property/index.js +6 -0
  125. package/dist/components/search/index.d.ts +7 -0
  126. package/dist/components/search/index.js +4 -0
  127. package/dist/components/search/use-search.d.ts +9 -0
  128. package/dist/components/search/use-search.js +6 -0
  129. package/dist/components/steps/Step.svelte +314 -0
  130. package/dist/components/steps/Step.svelte.d.ts +26 -0
  131. package/dist/components/steps/Steps.svelte +51 -0
  132. package/dist/components/steps/Steps.svelte.d.ts +11 -0
  133. package/dist/components/steps/constants.d.ts +4 -0
  134. package/dist/components/steps/constants.js +2 -0
  135. package/dist/components/steps/context.d.ts +10 -0
  136. package/dist/components/steps/context.js +2 -0
  137. package/dist/components/steps/index.d.ts +32 -0
  138. package/dist/components/steps/index.js +6 -0
  139. package/dist/components/tabs/Tabs.svelte +254 -0
  140. package/dist/components/tabs/Tabs.svelte.d.ts +16 -0
  141. package/dist/components/tabs/TabsItem.svelte +56 -0
  142. package/dist/components/tabs/TabsItem.svelte.d.ts +15 -0
  143. package/dist/components/tabs/context.d.ts +20 -0
  144. package/dist/components/tabs/context.js +2 -0
  145. package/dist/components/tabs/index.d.ts +27 -0
  146. package/dist/components/tabs/index.js +5 -0
  147. package/dist/components/tile/Tile.svelte +124 -0
  148. package/dist/components/tile/Tile.svelte.d.ts +12 -0
  149. package/dist/components/tile/index.d.ts +2 -0
  150. package/dist/components/tile/index.js +1 -0
  151. package/dist/components/tooltip/Tooltip.svelte +170 -0
  152. package/dist/components/tooltip/Tooltip.svelte.d.ts +23 -0
  153. package/dist/components/tooltip/index.d.ts +2 -0
  154. package/dist/components/tooltip/index.js +1 -0
  155. package/dist/components/tree/Tree.svelte +226 -0
  156. package/dist/components/tree/Tree.svelte.d.ts +9 -0
  157. package/dist/components/tree/TreeFile.svelte +44 -0
  158. package/dist/components/tree/TreeFile.svelte.d.ts +6 -0
  159. package/dist/components/tree/TreeFolder.svelte +107 -0
  160. package/dist/components/tree/TreeFolder.svelte.d.ts +10 -0
  161. package/dist/components/tree/context.d.ts +3 -0
  162. package/dist/components/tree/context.js +7 -0
  163. package/dist/components/tree/index.d.ts +10 -0
  164. package/dist/components/tree/index.js +9 -0
  165. package/dist/components/tree/tree-level-context.d.ts +8 -0
  166. package/dist/components/tree/tree-level-context.js +7 -0
  167. package/dist/components/tree/use-tree-level.d.ts +3 -0
  168. package/dist/components/tree/use-tree-level.js +5 -0
  169. package/dist/components/tree/utils.d.ts +9 -0
  170. package/dist/components/tree/utils.js +86 -0
  171. package/dist/components/update/Update.svelte +210 -0
  172. package/dist/components/update/Update.svelte.d.ts +34 -0
  173. package/dist/components/update/index.d.ts +4 -0
  174. package/dist/components/update/index.js +3 -0
  175. package/dist/components/view/View.svelte +52 -0
  176. package/dist/components/view/View.svelte.d.ts +14 -0
  177. package/dist/components/view/index.d.ts +3 -0
  178. package/dist/components/view/index.js +2 -0
  179. package/dist/constants/brands.d.ts +2 -0
  180. package/dist/constants/brands.js +4 -0
  181. package/dist/constants/index.d.ts +6 -0
  182. package/dist/constants/index.js +6 -0
  183. package/dist/constants/selectors.d.ts +125 -0
  184. package/dist/constants/selectors.js +125 -0
  185. package/dist/hooks/index.d.ts +8 -0
  186. package/dist/hooks/index.js +6 -0
  187. package/dist/hooks/use-expandable-memory.svelte.d.ts +6 -0
  188. package/dist/hooks/use-expandable-memory.svelte.js +89 -0
  189. package/dist/hooks/use-expandable.svelte.d.ts +15 -0
  190. package/dist/hooks/use-expandable.svelte.js +53 -0
  191. package/dist/hooks/use-get-shiki-highlighted-html.svelte.d.ts +8 -0
  192. package/dist/hooks/use-get-shiki-highlighted-html.svelte.js +36 -0
  193. package/dist/hooks/use-has-hover.d.ts +2 -0
  194. package/dist/hooks/use-has-hover.js +10 -0
  195. package/dist/hooks/use-is-dark-theme.svelte.d.ts +3 -0
  196. package/dist/hooks/use-is-dark-theme.svelte.js +25 -0
  197. package/dist/hooks/use-isomorphic-layout-effect.d.ts +3 -0
  198. package/dist/hooks/use-isomorphic-layout-effect.js +6 -0
  199. package/dist/index.d.ts +2 -0
  200. package/dist/index.js +2 -0
  201. package/dist/styles.css +2 -0
  202. package/dist/utils/cn.d.ts +3 -0
  203. package/dist/utils/cn.js +7 -0
  204. package/dist/utils/copy-to-clipboard.d.ts +4 -0
  205. package/dist/utils/copy-to-clipboard.js +50 -0
  206. package/dist/utils/dedent.d.ts +1 -0
  207. package/dist/utils/dedent.js +125 -0
  208. package/dist/utils/enhance-video-props.d.ts +4 -0
  209. package/dist/utils/enhance-video-props.js +25 -0
  210. package/dist/utils/get-node-text.d.ts +2 -0
  211. package/dist/utils/get-node-text.js +26 -0
  212. package/dist/utils/icon-utils.d.ts +18 -0
  213. package/dist/utils/icon-utils.js +30 -0
  214. package/dist/utils/is-absolute-url.d.ts +4 -0
  215. package/dist/utils/is-absolute-url.js +11 -0
  216. package/dist/utils/is-remote-url.d.ts +2 -0
  217. package/dist/utils/is-remote-url.js +12 -0
  218. package/dist/utils/make-marker-ids-unique.d.ts +2 -0
  219. package/dist/utils/make-marker-ids-unique.js +36 -0
  220. package/dist/utils/shiki/code-styling.d.ts +13 -0
  221. package/dist/utils/shiki/code-styling.js +1 -0
  222. package/dist/utils/shiki/constants.d.ts +21 -0
  223. package/dist/utils/shiki/constants.js +116 -0
  224. package/dist/utils/shiki/get-code-styling.d.ts +9 -0
  225. package/dist/utils/shiki/get-code-styling.js +38 -0
  226. package/dist/utils/shiki/get-shiki-background-colors.d.ts +20 -0
  227. package/dist/utils/shiki/get-shiki-background-colors.js +56 -0
  228. package/dist/utils/shiki/index.d.ts +30 -0
  229. package/dist/utils/shiki/index.js +209 -0
  230. package/dist/utils/shiki/lib.d.ts +4 -0
  231. package/dist/utils/shiki/lib.js +49 -0
  232. package/dist/utils/shiki/shiki-themes.d.ts +2 -0
  233. package/dist/utils/shiki/shiki-themes.js +64 -0
  234. package/dist/utils/shiki/snippet-presets.d.ts +27 -0
  235. package/dist/utils/shiki/snippet-presets.js +44 -0
  236. package/dist/utils/shiki/worker-client.d.ts +9 -0
  237. package/dist/utils/shiki/worker-client.js +22 -0
  238. package/dist/utils/shiki/worker.d.ts +1 -0
  239. package/dist/utils/shiki/worker.js +134 -0
  240. package/dist/utils/slugify.d.ts +2 -0
  241. package/dist/utils/slugify.js +9 -0
  242. package/package.json +100 -0
@@ -0,0 +1,125 @@
1
+ const _classes = {
2
+ Accordion: "accordion",
3
+ AccordionGroup: "accordion-group",
4
+ Callout: "callout",
5
+ Card: "card",
6
+ Columns: "columns",
7
+ CodeBlock: "code-block",
8
+ CodeBlockIcon: "code-block-icon",
9
+ CodeGroup: "code-group",
10
+ Expandable: "expandable",
11
+ Field: "field",
12
+ Frame: "frame",
13
+ Icon: "icon",
14
+ Mermaid: "mermaid",
15
+ Step: "step",
16
+ Steps: "steps",
17
+ Tab: "tab",
18
+ Tabs: "tabs",
19
+ TabIcon: "tab-icon",
20
+ Update: "update",
21
+ Tooltip: "tooltip",
22
+ Panel: "panel",
23
+ APISection: "api-section",
24
+ APISectionHeading: "api-section-heading",
25
+ APISectionHeadingTitle: "api-section-heading-title",
26
+ APISectionHeadingSubtitle: "api-section-heading-subtitle",
27
+ OptionDropdown: "option-dropdown",
28
+ TryitButton: "tryit-button",
29
+ MethodPill: "method-pill",
30
+ MethodNavPill: "method-nav-pill",
31
+ NavTagPill: "nav-tag-pill",
32
+ NavTagPillText: "nav-tag-pill-text",
33
+ Anchors: "nav-anchors",
34
+ Anchor: "nav-anchor",
35
+ TabsBar: "nav-tabs",
36
+ TabsBarItem: "nav-tabs-item",
37
+ MobileNavTabsBarItem: "mobile-nav-tabs-item",
38
+ TableOfContents: "toc",
39
+ TableOfContentsItem: "toc-item",
40
+ Footer: "footer",
41
+ AdvancedFooter: "advanced-footer",
42
+ SidebarGroupIcon: "sidebar-group-icon",
43
+ SidebarGroupHeader: "sidebar-group-header",
44
+ SidebarTitle: "sidebar-title",
45
+ SidebarGroup: "sidebar-group",
46
+ SidebarNavGroupDivider: "sidebar-nav-group-divider",
47
+ NavBarLink: "navbar-link",
48
+ TopbarRightContainer: "topbar-right-container",
49
+ Logo: "nav-logo",
50
+ PaginationPrev: "pagination-prev",
51
+ PaginationNext: "pagination-next",
52
+ PaginationTitle: "pagination-title",
53
+ FeedbackToolbar: "feedback-toolbar",
54
+ Eyebrow: "eyebrow",
55
+ BreadcrumbList: "breadcrumb-list",
56
+ BreadcrumbItem: "breadcrumb-item",
57
+ Content: "mdx-content",
58
+ DropdownTrigger: "nav-dropdown-trigger",
59
+ DropdownContent: "nav-dropdown-content",
60
+ DropdownItem: "nav-dropdown-item",
61
+ DropdownItemTextContainer: "nav-dropdown-item-text-container",
62
+ DropdownItemTitle: "nav-dropdown-item-title",
63
+ DropdownItemDescription: "nav-dropdown-item-description",
64
+ DropdownItemIcon: "nav-dropdown-item-icon",
65
+ ProductsSelectorTrigger: "nav-dropdown-products-selector-trigger",
66
+ ProductsSelectorContent: "nav-dropdown-products-selector-content",
67
+ ProductsSelectorItem: "nav-dropdown-products-selector-item",
68
+ ProductsSelectorItemTitle: "nav-dropdown-products-selector-item-title",
69
+ ProductsSelectorItemDescription: "nav-dropdown-products-selector-item-description",
70
+ ProductsSelectorItemIcon: "nav-dropdown-products-selector-item-icon",
71
+ Link: "link",
72
+ AlmondLayout: "almond-layout",
73
+ AlmondNavBottomSection: "almond-nav-bottom-section",
74
+ AlmondNavBottomSectionDivider: "almond-nav-bottom-section-divider",
75
+ ChatAssistantSheet: "chat-assistant-sheet",
76
+ ChatAssistantSheetHeader: "chat-assistant-sheet-header",
77
+ ChatAssistantSheetContent: "chat-assistant-sheet-content",
78
+ ChatAssistantInput: "chat-assistant-input",
79
+ ChatAssistantFloatingInput: "chat-assistant-floating-input",
80
+ ChatAssistantSendButton: "chat-assistant-send-button",
81
+ ChatAssistantDisclaimerText: "chat-assistant-disclaimer-text",
82
+ ChatAssistantPayloadItem: "chat-assistant-payload-item",
83
+ StarterQuestionText: "starter-question-text",
84
+ LoginLink: "login-link",
85
+ LogoutLink: "logout-link",
86
+ ContextualFeedbackContainer: "contextual-feedback-container",
87
+ ContextualFeedbackForm: "contextual-feedback-form",
88
+ ContextualFeedbackFormTitle: "contextual-feedback-form-title",
89
+ ContextualFeedbackFormInput: "contextual-feedback-input",
90
+ ContextualFeedbackFormButton: "contextual-feedback-button",
91
+ ContextualFeedbackFormSubmitButton: "contextual-feedback-form-submit-button",
92
+ CodeSnippetFeedbackPopoverContent: "code-snippet-feedback-popover-content",
93
+ CodeSnippetFeedbackForm: "code-snippet-feedback-form",
94
+ CodeSnippetFeedbackButton: "code-snippet-feedback-button",
95
+ CodeSnippetFeedbackTextArea: "code-snippet-feedback-textarea",
96
+ CodeSnippetFeedbackFormTitle: "code-snippet-feedback-form-title",
97
+ CodeSnippetFeedbackFormDescription: "code-snippet-feedback-form-description",
98
+ CodeSnippetFeedbackFormSubmitButton: "code-snippet-feedback-form-submit-button",
99
+ NotFoundContainer: "not-found-container",
100
+ NotFoundStatusCode: "not-found-status-code",
101
+ NotFoundTitle: "not-found-title",
102
+ NotFoundDescription: "not-found-description",
103
+ NotFoundLogo: "not-found-logo",
104
+ NotFoundLogoContainer: "not-found-logo-container",
105
+ NotFoundMessage: "not-found-message",
106
+ NotFoundGoBackButton: "not-found-go-back-button",
107
+ NotFoundGoBackArrow: "not-found-go-back-arrow",
108
+ NotFoundGoBackText: "not-found-go-back-text",
109
+ NotFoundRecommendedPagesList: "not-found-recommended-pages-list",
110
+ NotFoundRecommendedPageLink: "not-found-recommended-page-link",
111
+ MultiViewItem: "multi-view-item",
112
+ MultiViewDropdown: "multi-view-dropdown",
113
+ MultiViewDropdownTrigger: "multi-view-dropdown-trigger",
114
+ MultiViewDropdownContent: "multi-view-dropdown-content",
115
+ MultiViewDropdownItem: "multi-view-dropdown-item",
116
+ Color: "color",
117
+ ColorRow: "color-row",
118
+ ColorItem: "color-item",
119
+ Tile: "tile",
120
+ Tree: "tree",
121
+ TreeFolder: "tree-folder",
122
+ TreeFile: "tree-file",
123
+ };
124
+ const Classes = Object.fromEntries(Object.entries(_classes).map(([key, value]) => [key, `${value}`]));
125
+ export { Classes };
@@ -0,0 +1,8 @@
1
+ export { useExpandable } from "./use-expandable.svelte";
2
+ export { useExpandableMemory } from "./use-expandable-memory.svelte";
3
+ export { useGetShikiHighlightedHtml } from "./use-get-shiki-highlighted-html.svelte";
4
+ export { useHasHover } from "./use-has-hover";
5
+ export { useIsDarkTheme } from "./use-is-dark-theme.svelte";
6
+ export { useIsomorphicLayoutEffect } from "./use-isomorphic-layout-effect";
7
+ export type { UseExpandableReturn } from "./use-expandable.svelte";
8
+ export type { UseGetShikiHighlightedHtmlReturn } from "./use-get-shiki-highlighted-html.svelte";
@@ -0,0 +1,6 @@
1
+ export { useExpandable } from "./use-expandable.svelte";
2
+ export { useExpandableMemory } from "./use-expandable-memory.svelte";
3
+ export { useGetShikiHighlightedHtml } from "./use-get-shiki-highlighted-html.svelte";
4
+ export { useHasHover } from "./use-has-hover";
5
+ export { useIsDarkTheme } from "./use-is-dark-theme.svelte";
6
+ export { useIsomorphicLayoutEffect } from "./use-isomorphic-layout-effect";
@@ -0,0 +1,6 @@
1
+ declare const useExpandableMemory: (getId: () => string | undefined, getDefaultExpanded: () => boolean, getElement: () => HTMLElement | null) => {
2
+ readonly isExpanded: boolean;
3
+ onManualToggle: (expanded: boolean) => void;
4
+ readonly isInSessionStorage: boolean;
5
+ };
6
+ export { useExpandableMemory };
@@ -0,0 +1,89 @@
1
+ const USER_TOGGLED_EXPANDABLES_KEY = "user_toggled_expandables";
2
+ const getManuallyToggledExpandables = () => {
3
+ try {
4
+ const manuallyToggledExpandables = sessionStorage.getItem(USER_TOGGLED_EXPANDABLES_KEY);
5
+ return manuallyToggledExpandables
6
+ ? JSON.parse(manuallyToggledExpandables)
7
+ : {};
8
+ }
9
+ catch {
10
+ return {};
11
+ }
12
+ };
13
+ const saveManuallyToggledState = (id, isExpanded) => {
14
+ try {
15
+ const current = getManuallyToggledExpandables();
16
+ const updated = { ...current, [id]: isExpanded };
17
+ sessionStorage.setItem(USER_TOGGLED_EXPANDABLES_KEY, JSON.stringify(updated));
18
+ }
19
+ catch {
20
+ // silently fail if setItem() fails
21
+ }
22
+ };
23
+ const useExpandableMemory = (getId, getDefaultExpanded, getElement) => {
24
+ // track if user manually clicked the expandable
25
+ let manuallyChanged = $state(false);
26
+ // track if the expandable state exists in session storage
27
+ let isInSessionStorage = $state(false);
28
+ let isExpanded = $state(getDefaultExpanded());
29
+ $effect(() => {
30
+ const id = getId();
31
+ if (!id) {
32
+ return;
33
+ }
34
+ const manuallyToggledExpandables = getManuallyToggledExpandables();
35
+ if (id in manuallyToggledExpandables) {
36
+ isExpanded = !!manuallyToggledExpandables[id];
37
+ manuallyChanged = true;
38
+ isInSessionStorage = true;
39
+ }
40
+ });
41
+ $effect(() => {
42
+ const defaultExpanded = getDefaultExpanded();
43
+ const observer = typeof IntersectionObserver === "undefined"
44
+ ? undefined
45
+ : new IntersectionObserver((entries) => {
46
+ const entry = entries[0];
47
+ if (entry) {
48
+ // Only auto-expand if the user hasn't manually clicked the expandable
49
+ // Don't update visibility state constantly during scroll
50
+ if (entry.isIntersecting &&
51
+ !manuallyChanged &&
52
+ defaultExpanded) {
53
+ isExpanded = isExpanded ? isExpanded : true;
54
+ }
55
+ }
56
+ }, {
57
+ rootMargin: "100px",
58
+ threshold: 0,
59
+ });
60
+ const currentElement = getElement();
61
+ if (observer && currentElement) {
62
+ observer.observe(currentElement);
63
+ }
64
+ return () => {
65
+ if (observer && currentElement) {
66
+ observer.unobserve(currentElement);
67
+ }
68
+ };
69
+ });
70
+ const onManualToggle = (expanded) => {
71
+ isExpanded = expanded;
72
+ manuallyChanged = true;
73
+ isInSessionStorage = true;
74
+ const id = getId();
75
+ if (id) {
76
+ saveManuallyToggledState(id, expanded);
77
+ }
78
+ };
79
+ return {
80
+ get isExpanded() {
81
+ return isExpanded;
82
+ },
83
+ onManualToggle,
84
+ get isInSessionStorage() {
85
+ return isInSessionStorage;
86
+ },
87
+ };
88
+ };
89
+ export { useExpandableMemory };
@@ -0,0 +1,15 @@
1
+ declare const SMALL_EXPANDABLE_NUMBER_OF_LINES = 7;
2
+ declare const SMALL_EXPANDABLE_HEIGHT_OFFSET = 30;
3
+ declare const EXPANDED_HEIGHT_OFFSET = 40;
4
+ declare const SMALL_EXPANDABLE_CODE_BLOCK_HEIGHT = 45;
5
+ declare const DEFAULT_EXPANDABLE_CODE_BLOCK_HEIGHT = 190;
6
+ type ReactiveValue<T> = T | (() => T);
7
+ type UseExpandableReturn = {
8
+ isExpanded: boolean;
9
+ calculatedHeight: number;
10
+ contentRef: HTMLElement | null;
11
+ toggleExpanded: () => void;
12
+ };
13
+ declare const useExpandable: (enable: ReactiveValue<boolean>, numberOfLines?: ReactiveValue<number | undefined>) => UseExpandableReturn;
14
+ export { SMALL_EXPANDABLE_NUMBER_OF_LINES, SMALL_EXPANDABLE_HEIGHT_OFFSET, EXPANDED_HEIGHT_OFFSET, SMALL_EXPANDABLE_CODE_BLOCK_HEIGHT, DEFAULT_EXPANDABLE_CODE_BLOCK_HEIGHT, useExpandable, };
15
+ export type { UseExpandableReturn };
@@ -0,0 +1,53 @@
1
+ const SMALL_EXPANDABLE_NUMBER_OF_LINES = 7;
2
+ const SMALL_EXPANDABLE_HEIGHT_OFFSET = 30;
3
+ const EXPANDED_HEIGHT_OFFSET = 40;
4
+ const SMALL_EXPANDABLE_CODE_BLOCK_HEIGHT = 45;
5
+ const DEFAULT_EXPANDABLE_CODE_BLOCK_HEIGHT = 190;
6
+ const resolve = (value) => typeof value === "function" ? value() : value;
7
+ const useExpandable = (enable, numberOfLines) => {
8
+ let isExpanded = $state(false);
9
+ let calculatedHeight = $state(0);
10
+ let contentRef = $state(null);
11
+ $effect(() => {
12
+ const currentEnable = resolve(enable);
13
+ const currentNumberOfLines = resolve(numberOfLines);
14
+ const currentContentRef = contentRef;
15
+ let rafId;
16
+ if (currentContentRef != null && currentEnable) {
17
+ rafId = requestAnimationFrame(() => {
18
+ if (contentRef === currentContentRef) {
19
+ calculatedHeight =
20
+ currentContentRef.scrollHeight +
21
+ (currentNumberOfLines !== undefined &&
22
+ currentNumberOfLines < SMALL_EXPANDABLE_NUMBER_OF_LINES
23
+ ? SMALL_EXPANDABLE_HEIGHT_OFFSET
24
+ : EXPANDED_HEIGHT_OFFSET);
25
+ }
26
+ });
27
+ }
28
+ return () => {
29
+ if (rafId !== undefined) {
30
+ cancelAnimationFrame(rafId);
31
+ }
32
+ };
33
+ });
34
+ const toggleExpanded = () => {
35
+ isExpanded = !isExpanded;
36
+ };
37
+ return {
38
+ get isExpanded() {
39
+ return isExpanded;
40
+ },
41
+ get calculatedHeight() {
42
+ return calculatedHeight;
43
+ },
44
+ get contentRef() {
45
+ return contentRef;
46
+ },
47
+ set contentRef(value) {
48
+ contentRef = value;
49
+ },
50
+ toggleExpanded,
51
+ };
52
+ };
53
+ export { SMALL_EXPANDABLE_NUMBER_OF_LINES, SMALL_EXPANDABLE_HEIGHT_OFFSET, EXPANDED_HEIGHT_OFFSET, SMALL_EXPANDABLE_CODE_BLOCK_HEIGHT, DEFAULT_EXPANDABLE_CODE_BLOCK_HEIGHT, useExpandable, };
@@ -0,0 +1,8 @@
1
+ import { type ShikiHighlightedHtmlArgs } from "../utils/shiki";
2
+ type PropsSource = ShikiHighlightedHtmlArgs | (() => ShikiHighlightedHtmlArgs);
3
+ type UseGetShikiHighlightedHtmlReturn = {
4
+ html: string | undefined;
5
+ };
6
+ declare const useGetShikiHighlightedHtml: (props: PropsSource) => UseGetShikiHighlightedHtmlReturn;
7
+ export { useGetShikiHighlightedHtml };
8
+ export type { UseGetShikiHighlightedHtmlReturn };
@@ -0,0 +1,36 @@
1
+ import { getShikiHighlightedHtml, } from "../utils/shiki";
2
+ const useGetShikiHighlightedHtml = (props) => {
3
+ let html = $state(undefined);
4
+ let requestSequence = 0;
5
+ $effect(() => {
6
+ const currentProps = typeof props === "function" ? props() : props;
7
+ const htmlOrPromise = getShikiHighlightedHtml(currentProps);
8
+ const requestId = ++requestSequence;
9
+ if (!(htmlOrPromise instanceof Promise)) {
10
+ html = htmlOrPromise;
11
+ return;
12
+ }
13
+ html = undefined;
14
+ void htmlOrPromise
15
+ .then((result) => {
16
+ if (requestId === requestSequence) {
17
+ html = result;
18
+ }
19
+ })
20
+ .catch((err) => {
21
+ console.error(err);
22
+ if (requestId === requestSequence) {
23
+ html = undefined;
24
+ }
25
+ });
26
+ return () => {
27
+ requestSequence += 1;
28
+ };
29
+ });
30
+ return {
31
+ get html() {
32
+ return html;
33
+ },
34
+ };
35
+ };
36
+ export { useGetShikiHighlightedHtml };
@@ -0,0 +1,2 @@
1
+ declare const useHasHover: () => boolean;
2
+ export { useHasHover };
@@ -0,0 +1,10 @@
1
+ const useHasHover = () => {
2
+ try {
3
+ return window.matchMedia("(hover: hover)").matches;
4
+ }
5
+ catch {
6
+ // assume that if browser too old to support matchMedia it's likely not a touch device
7
+ return true;
8
+ }
9
+ };
10
+ export { useHasHover };
@@ -0,0 +1,3 @@
1
+ export declare function useIsDarkTheme(): {
2
+ readonly isDarkTheme: boolean;
3
+ };
@@ -0,0 +1,25 @@
1
+ import { onMount } from "svelte";
2
+ function createIsDarkTheme() {
3
+ let isDarkTheme = $state(false);
4
+ function getIsDarkTheme() {
5
+ if (typeof document === "undefined")
6
+ return false;
7
+ return document.documentElement.classList.contains("dark");
8
+ }
9
+ onMount(() => {
10
+ isDarkTheme = getIsDarkTheme();
11
+ const observer = new MutationObserver(() => {
12
+ isDarkTheme = getIsDarkTheme();
13
+ });
14
+ observer.observe(document.documentElement, { attributes: true, attributeFilter: ["class"] });
15
+ return () => observer.disconnect();
16
+ });
17
+ return {
18
+ get isDarkTheme() {
19
+ return isDarkTheme;
20
+ },
21
+ };
22
+ }
23
+ export function useIsDarkTheme() {
24
+ return createIsDarkTheme();
25
+ }
@@ -0,0 +1,3 @@
1
+ type Cleanup = () => void;
2
+ declare const useIsomorphicLayoutEffect: (effect: () => void | Cleanup) => void;
3
+ export { useIsomorphicLayoutEffect };
@@ -0,0 +1,6 @@
1
+ import { onMount } from "svelte";
2
+ // Svelte's onMount is the native equivalent of React's client-safe layout effect.
3
+ const useIsomorphicLayoutEffect = (effect) => {
4
+ onMount(effect);
5
+ };
6
+ export { useIsomorphicLayoutEffect };
@@ -0,0 +1,2 @@
1
+ export * from "./components";
2
+ export { cn } from "./utils/cn";
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./components";
2
+ export { cn } from "./utils/cn";