fluentui-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 (283) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +201 -0
  3. package/dist/components/auto-suggest-box/auto-suggest-box.d.ts +2 -0
  4. package/dist/components/auto-suggest-box/auto-suggest-box.js +2 -0
  5. package/dist/components/auto-suggest-box/auto-suggest-box.svelte +457 -0
  6. package/dist/components/auto-suggest-box/auto-suggest-box.svelte.d.ts +4 -0
  7. package/dist/components/auto-suggest-box/docs/llms.md +73 -0
  8. package/dist/components/auto-suggest-box/option.svelte +82 -0
  9. package/dist/components/auto-suggest-box/option.svelte.d.ts +4 -0
  10. package/dist/components/auto-suggest-box/types.d.ts +140 -0
  11. package/dist/components/auto-suggest-box/types.js +1 -0
  12. package/dist/components/avatar/avatar.svelte +269 -0
  13. package/dist/components/avatar/avatar.svelte.d.ts +20 -0
  14. package/dist/components/avatar/docs/llms.md +92 -0
  15. package/dist/components/avatar/type.d.ts +63 -0
  16. package/dist/components/avatar/type.js +1 -0
  17. package/dist/components/badge/badge-icon.svelte +103 -0
  18. package/dist/components/badge/badge-icon.svelte.d.ts +25 -0
  19. package/dist/components/badge/badge.svelte +163 -0
  20. package/dist/components/badge/badge.svelte.d.ts +20 -0
  21. package/dist/components/badge/docs/llms.md +133 -0
  22. package/dist/components/badge/types.d.ts +70 -0
  23. package/dist/components/badge/types.js +1 -0
  24. package/dist/components/badge/utils.svelte.d.ts +16 -0
  25. package/dist/components/badge/utils.svelte.js +35 -0
  26. package/dist/components/button/button.svelte +203 -0
  27. package/dist/components/button/button.svelte.d.ts +38 -0
  28. package/dist/components/button/docs/llms.md +102 -0
  29. package/dist/components/button/split-button.svelte +66 -0
  30. package/dist/components/button/split-button.svelte.d.ts +4 -0
  31. package/dist/components/button/types.d.ts +84 -0
  32. package/dist/components/button/types.js +1 -0
  33. package/dist/components/calendar-date-picker/calendar-date-picker.svelte +119 -0
  34. package/dist/components/calendar-date-picker/calendar-date-picker.svelte.d.ts +4 -0
  35. package/dist/components/calendar-date-picker/docs/llms.md +33 -0
  36. package/dist/components/calendar-date-picker/types.d.ts +36 -0
  37. package/dist/components/calendar-date-picker/types.js +1 -0
  38. package/dist/components/calendar-view/calendar-view-controls.svelte +115 -0
  39. package/dist/components/calendar-view/calendar-view-controls.svelte.d.ts +3 -0
  40. package/dist/components/calendar-view/calendar-view-days.svelte +210 -0
  41. package/dist/components/calendar-view/calendar-view-days.svelte.d.ts +3 -0
  42. package/dist/components/calendar-view/calendar-view-grid.d.ts +38 -0
  43. package/dist/components/calendar-view/calendar-view-grid.js +140 -0
  44. package/dist/components/calendar-view/calendar-view-header.svelte +66 -0
  45. package/dist/components/calendar-view/calendar-view-header.svelte.d.ts +18 -0
  46. package/dist/components/calendar-view/calendar-view-item.svelte +181 -0
  47. package/dist/components/calendar-view/calendar-view-item.svelte.d.ts +4 -0
  48. package/dist/components/calendar-view/calendar-view-months.svelte +165 -0
  49. package/dist/components/calendar-view/calendar-view-months.svelte.d.ts +3 -0
  50. package/dist/components/calendar-view/calendar-view-years.svelte +161 -0
  51. package/dist/components/calendar-view/calendar-view-years.svelte.d.ts +3 -0
  52. package/dist/components/calendar-view/calendar-view.svelte +451 -0
  53. package/dist/components/calendar-view/calendar-view.svelte.d.ts +9 -0
  54. package/dist/components/calendar-view/calendar-view.svelte.js +196 -0
  55. package/dist/components/calendar-view/docs/llms.md +121 -0
  56. package/dist/components/calendar-view/index.d.ts +1 -0
  57. package/dist/components/calendar-view/index.js +1 -0
  58. package/dist/components/calendar-view/types.d.ts +174 -0
  59. package/dist/components/calendar-view/types.js +1 -0
  60. package/dist/components/checkbox/checkbox.svelte +171 -0
  61. package/dist/components/checkbox/checkbox.svelte.d.ts +40 -0
  62. package/dist/components/checkbox/docs/llms.md +78 -0
  63. package/dist/components/checkbox/types.d.ts +50 -0
  64. package/dist/components/checkbox/types.js +1 -0
  65. package/dist/components/date-picker/date-picker.svelte +381 -0
  66. package/dist/components/date-picker/date-picker.svelte.d.ts +4 -0
  67. package/dist/components/date-picker/docs/llms.md +52 -0
  68. package/dist/components/date-picker/index.d.ts +1 -0
  69. package/dist/components/date-picker/index.js +1 -0
  70. package/dist/components/date-picker/types.d.ts +74 -0
  71. package/dist/components/date-picker/types.js +1 -0
  72. package/dist/components/dialog/dialog-actions.svelte +37 -0
  73. package/dist/components/dialog/dialog-actions.svelte.d.ts +4 -0
  74. package/dist/components/dialog/dialog-content.svelte +17 -0
  75. package/dist/components/dialog/dialog-content.svelte.d.ts +4 -0
  76. package/dist/components/dialog/dialog-surface.svelte +95 -0
  77. package/dist/components/dialog/dialog-surface.svelte.d.ts +4 -0
  78. package/dist/components/dialog/dialog-title.svelte +33 -0
  79. package/dist/components/dialog/dialog-title.svelte.d.ts +25 -0
  80. package/dist/components/dialog/dialog-trigger.svelte +23 -0
  81. package/dist/components/dialog/dialog-trigger.svelte.d.ts +4 -0
  82. package/dist/components/dialog/dialog.svelte +64 -0
  83. package/dist/components/dialog/dialog.svelte.d.ts +7 -0
  84. package/dist/components/dialog/dialog.svelte.js +2 -0
  85. package/dist/components/dialog/docs/llms.md +131 -0
  86. package/dist/components/dialog/types.d.ts +92 -0
  87. package/dist/components/dialog/types.js +1 -0
  88. package/dist/components/divider/divider.svelte +120 -0
  89. package/dist/components/divider/divider.svelte.d.ts +39 -0
  90. package/dist/components/divider/docs/llms.md +83 -0
  91. package/dist/components/divider/types.d.ts +32 -0
  92. package/dist/components/divider/types.js +1 -0
  93. package/dist/components/dropdown/docs/llms.md +70 -0
  94. package/dist/components/dropdown/dropdown-context.d.ts +2 -0
  95. package/dist/components/dropdown/dropdown-context.js +2 -0
  96. package/dist/components/dropdown/dropdown-option.svelte +31 -0
  97. package/dist/components/dropdown/dropdown-option.svelte.d.ts +4 -0
  98. package/dist/components/dropdown/dropdown.svelte +309 -0
  99. package/dist/components/dropdown/dropdown.svelte.d.ts +4 -0
  100. package/dist/components/dropdown/types.d.ts +82 -0
  101. package/dist/components/dropdown/types.js +1 -0
  102. package/dist/components/dropdown-select/docs/llms.md +72 -0
  103. package/dist/components/dropdown-select/dropdown-select-option.svelte +87 -0
  104. package/dist/components/dropdown-select/dropdown-select-option.svelte.d.ts +4 -0
  105. package/dist/components/dropdown-select/dropdown-select.svelte +165 -0
  106. package/dist/components/dropdown-select/dropdown-select.svelte.d.ts +4 -0
  107. package/dist/components/dropdown-select/dropdown-select.svelte.js +48 -0
  108. package/dist/components/dropdown-select/index.d.ts +2 -0
  109. package/dist/components/dropdown-select/index.js +2 -0
  110. package/dist/components/dropdown-select/types.d.ts +46 -0
  111. package/dist/components/dropdown-select/types.js +1 -0
  112. package/dist/components/expander/docs/llms.md +88 -0
  113. package/dist/components/expander/expander.svelte +249 -0
  114. package/dist/components/expander/expander.svelte.d.ts +21 -0
  115. package/dist/components/expander/types.d.ts +47 -0
  116. package/dist/components/expander/types.js +1 -0
  117. package/dist/components/flyout/docs/llms.md +31 -0
  118. package/dist/components/flyout/flyout.svelte +148 -0
  119. package/dist/components/flyout/flyout.svelte.d.ts +19 -0
  120. package/dist/components/flyout/types.d.ts +36 -0
  121. package/dist/components/flyout/types.js +1 -0
  122. package/dist/components/hyperlink/docs/llms.md +33 -0
  123. package/dist/components/hyperlink/hyperlink.svelte +66 -0
  124. package/dist/components/hyperlink/hyperlink.svelte.d.ts +16 -0
  125. package/dist/components/hyperlink/types.d.ts +14 -0
  126. package/dist/components/hyperlink/types.js +1 -0
  127. package/dist/components/info-bar/docs/llms.md +81 -0
  128. package/dist/components/info-bar/info-bar.svelte +140 -0
  129. package/dist/components/info-bar/info-bar.svelte.d.ts +19 -0
  130. package/dist/components/info-bar/types.d.ts +27 -0
  131. package/dist/components/info-bar/types.js +1 -0
  132. package/dist/components/label/docs/llms.md +67 -0
  133. package/dist/components/label/label.svelte +95 -0
  134. package/dist/components/label/label.svelte.d.ts +4 -0
  135. package/dist/components/label/types.d.ts +32 -0
  136. package/dist/components/label/types.js +1 -0
  137. package/dist/components/list-view/docs/llms.md +110 -0
  138. package/dist/components/list-view/list-view-item.svelte +168 -0
  139. package/dist/components/list-view/list-view-item.svelte.d.ts +25 -0
  140. package/dist/components/list-view/list-view.svelte +137 -0
  141. package/dist/components/list-view/list-view.svelte.d.ts +25 -0
  142. package/dist/components/list-view/types.d.ts +95 -0
  143. package/dist/components/list-view/types.js +1 -0
  144. package/dist/components/list-view/utils.d.ts +6 -0
  145. package/dist/components/list-view/utils.js +12 -0
  146. package/dist/components/menu/context-menu-trigger.svelte +84 -0
  147. package/dist/components/menu/context-menu-trigger.svelte.d.ts +9 -0
  148. package/dist/components/menu/docs/llms.md +169 -0
  149. package/dist/components/menu/menu-divider.svelte +9 -0
  150. package/dist/components/menu/menu-divider.svelte.d.ts +26 -0
  151. package/dist/components/menu/menu-group.svelte +31 -0
  152. package/dist/components/menu/menu-group.svelte.d.ts +4 -0
  153. package/dist/components/menu/menu-item-checkbox.svelte +143 -0
  154. package/dist/components/menu/menu-item-checkbox.svelte.d.ts +15 -0
  155. package/dist/components/menu/menu-item-radio.svelte +147 -0
  156. package/dist/components/menu/menu-item-radio.svelte.d.ts +15 -0
  157. package/dist/components/menu/menu-item-switch.svelte +194 -0
  158. package/dist/components/menu/menu-item-switch.svelte.d.ts +15 -0
  159. package/dist/components/menu/menu-item.svelte +124 -0
  160. package/dist/components/menu/menu-item.svelte.d.ts +18 -0
  161. package/dist/components/menu/menu-list.svelte +38 -0
  162. package/dist/components/menu/menu-list.svelte.d.ts +5 -0
  163. package/dist/components/menu/menu-popover.svelte +125 -0
  164. package/dist/components/menu/menu-popover.svelte.d.ts +12 -0
  165. package/dist/components/menu/menu-trigger.svelte +121 -0
  166. package/dist/components/menu/menu-trigger.svelte.d.ts +4 -0
  167. package/dist/components/menu/menu.svelte +124 -0
  168. package/dist/components/menu/menu.svelte.d.ts +4 -0
  169. package/dist/components/menu/menu.svelte.js +77 -0
  170. package/dist/components/menu/types.d.ts +127 -0
  171. package/dist/components/menu/types.js +1 -0
  172. package/dist/components/number-box/docs/llms.md +37 -0
  173. package/dist/components/number-box/number-box.svelte +115 -0
  174. package/dist/components/number-box/number-box.svelte.d.ts +15 -0
  175. package/dist/components/number-box/types.d.ts +16 -0
  176. package/dist/components/number-box/types.js +1 -0
  177. package/dist/components/persona/docs/llms.md +107 -0
  178. package/dist/components/persona/persona.svelte +79 -0
  179. package/dist/components/persona/persona.svelte.d.ts +4 -0
  180. package/dist/components/persona/types.d.ts +42 -0
  181. package/dist/components/persona/types.js +1 -0
  182. package/dist/components/progress-bar/docs/llms.md +67 -0
  183. package/dist/components/progress-bar/progress-bar.svelte +167 -0
  184. package/dist/components/progress-bar/progress-bar.svelte.d.ts +15 -0
  185. package/dist/components/progress-bar/types.d.ts +39 -0
  186. package/dist/components/progress-bar/types.js +1 -0
  187. package/dist/components/progress-ring/docs/llms.md +76 -0
  188. package/dist/components/progress-ring/progress-ring.svelte +145 -0
  189. package/dist/components/progress-ring/progress-ring.svelte.d.ts +15 -0
  190. package/dist/components/progress-ring/types.d.ts +42 -0
  191. package/dist/components/progress-ring/types.js +1 -0
  192. package/dist/components/radio-button/docs/llms.md +64 -0
  193. package/dist/components/radio-button/radio-button.svelte +129 -0
  194. package/dist/components/radio-button/radio-button.svelte.d.ts +19 -0
  195. package/dist/components/radio-button/types.d.ts +24 -0
  196. package/dist/components/radio-button/types.js +1 -0
  197. package/dist/components/skeleton/docs/llms.md +67 -0
  198. package/dist/components/skeleton/skeleton.svelte +106 -0
  199. package/dist/components/skeleton/skeleton.svelte.d.ts +39 -0
  200. package/dist/components/skeleton/types.d.ts +24 -0
  201. package/dist/components/skeleton/types.js +1 -0
  202. package/dist/components/slider/docs/llms.md +75 -0
  203. package/dist/components/slider/slider.svelte +486 -0
  204. package/dist/components/slider/slider.svelte.d.ts +19 -0
  205. package/dist/components/slider/types.d.ts +102 -0
  206. package/dist/components/slider/types.js +1 -0
  207. package/dist/components/text-box/docs/llms.md +86 -0
  208. package/dist/components/text-box/text-box-button.svelte +65 -0
  209. package/dist/components/text-box/text-box-button.svelte.d.ts +9 -0
  210. package/dist/components/text-box/text-box.svelte +299 -0
  211. package/dist/components/text-box/text-box.svelte.d.ts +16 -0
  212. package/dist/components/text-box/types.d.ts +60 -0
  213. package/dist/components/text-box/types.js +1 -0
  214. package/dist/components/textarea/docs/llms.md +55 -0
  215. package/dist/components/textarea/textarea.svelte +151 -0
  216. package/dist/components/textarea/textarea.svelte.d.ts +17 -0
  217. package/dist/components/textarea/types.d.ts +33 -0
  218. package/dist/components/textarea/types.js +1 -0
  219. package/dist/components/time-picker/docs/llms.md +47 -0
  220. package/dist/components/time-picker/index.d.ts +1 -0
  221. package/dist/components/time-picker/index.js +1 -0
  222. package/dist/components/time-picker/time-picker.svelte +336 -0
  223. package/dist/components/time-picker/time-picker.svelte.d.ts +4 -0
  224. package/dist/components/time-picker/types.d.ts +54 -0
  225. package/dist/components/time-picker/types.js +1 -0
  226. package/dist/components/toggle-switch/docs/llms.md +39 -0
  227. package/dist/components/toggle-switch/toggle-switch.svelte +151 -0
  228. package/dist/components/toggle-switch/toggle-switch.svelte.d.ts +17 -0
  229. package/dist/components/toggle-switch/types.d.ts +20 -0
  230. package/dist/components/toggle-switch/types.js +1 -0
  231. package/dist/components/tooltip/docs/llms.md +74 -0
  232. package/dist/components/tooltip/tooltip.svelte +246 -0
  233. package/dist/components/tooltip/tooltip.svelte.d.ts +18 -0
  234. package/dist/components/tooltip/types.d.ts +67 -0
  235. package/dist/components/tooltip/types.js +1 -0
  236. package/dist/components/tree-view/docs/llms.md +117 -0
  237. package/dist/components/tree-view/tree-view-item-content.svelte +158 -0
  238. package/dist/components/tree-view/tree-view-item-content.svelte.d.ts +4 -0
  239. package/dist/components/tree-view/tree-view-item.svelte +197 -0
  240. package/dist/components/tree-view/tree-view-item.svelte.d.ts +4 -0
  241. package/dist/components/tree-view/tree-view.svelte +220 -0
  242. package/dist/components/tree-view/tree-view.svelte.d.ts +4 -0
  243. package/dist/components/tree-view/tree-view.svelte.js +111 -0
  244. package/dist/components/tree-view/types.d.ts +185 -0
  245. package/dist/components/tree-view/types.js +1 -0
  246. package/dist/css/class-darkmode.css +186 -0
  247. package/dist/css/media-darkmode.css +189 -0
  248. package/dist/css/reset.css +53 -0
  249. package/dist/css/theme.css +276 -0
  250. package/dist/css/typography.css +67 -0
  251. package/dist/css/utils.d.ts +1 -0
  252. package/dist/css/utils.js +153 -0
  253. package/dist/index.d.ts +63 -0
  254. package/dist/index.js +129 -0
  255. package/dist/internal/components/dynamic-carousel/dynamic-carousel.svelte +449 -0
  256. package/dist/internal/components/dynamic-carousel/dynamic-carousel.svelte.d.ts +22 -0
  257. package/dist/internal/components/render-soc/render-soc.svelte +29 -0
  258. package/dist/internal/components/render-soc/render-soc.svelte.d.ts +30 -0
  259. package/dist/internal/constants.d.ts +26 -0
  260. package/dist/internal/constants.js +4036 -0
  261. package/dist/internal/context.d.ts +14 -0
  262. package/dist/internal/context.js +13 -0
  263. package/dist/internal/dom-utils.svelte.d.ts +6 -0
  264. package/dist/internal/dom-utils.svelte.js +46 -0
  265. package/dist/internal/floating-ui/floating.svelte.d.ts +15 -0
  266. package/dist/internal/floating-ui/floating.svelte.js +26 -0
  267. package/dist/internal/floating-ui/utils.d.ts +3 -0
  268. package/dist/internal/floating-ui/utils.js +30 -0
  269. package/dist/internal/index.d.ts +9 -0
  270. package/dist/internal/index.js +9 -0
  271. package/dist/internal/polyfills/expander.svelte.d.ts +21 -0
  272. package/dist/internal/polyfills/expander.svelte.js +96 -0
  273. package/dist/internal/transitions.d.ts +32 -0
  274. package/dist/internal/transitions.js +37 -0
  275. package/dist/internal/utils.d.ts +22 -0
  276. package/dist/internal/utils.js +63 -0
  277. package/dist/providers/fluentui-svelte/fluentui-svelte.d.ts +19 -0
  278. package/dist/providers/fluentui-svelte/fluentui-svelte.js +11 -0
  279. package/dist/providers/fluentui-svelte/fluentui-svelte.svelte +68 -0
  280. package/dist/providers/fluentui-svelte/fluentui-svelte.svelte.d.ts +9 -0
  281. package/dist/types/index.d.ts +117 -0
  282. package/dist/types/index.js +1 -0
  283. package/package.json +142 -0
@@ -0,0 +1,33 @@
1
+ <script lang="ts" generics="T extends DialogTitleTag">
2
+ import { PREFIX } from '../../internal/constants.js';
3
+ import { getDialogContext } from './dialog.svelte.js';
4
+ import type { DialogTitleProps, DialogTitleTag } from './types.js';
5
+
6
+ let { as = 'h3' as T, ref = $bindable(), children }: DialogTitleProps<T> = $props();
7
+
8
+ const FALLBACK_ID = $props.id();
9
+ const ID = `${PREFIX}dialog-title-${FALLBACK_ID}`;
10
+
11
+ const context = getDialogContext();
12
+
13
+ $effect.pre(() => {
14
+ if (!context) return;
15
+
16
+ context.state.titleId = ID;
17
+
18
+ return () => {
19
+ context.state.titleId = undefined;
20
+ };
21
+ });
22
+ </script>
23
+
24
+ <svelte:element this={as} id={ID} class="dialog-title" bind:this={ref}>
25
+ {@render children?.()}
26
+ </svelte:element>
27
+
28
+ <style>
29
+ .dialog-title {
30
+ padding: 1.4rem 2rem 0 2rem;
31
+ grid-row: 1 / 1;
32
+ }
33
+ </style>
@@ -0,0 +1,25 @@
1
+ import type { DialogTitleProps, DialogTitleTag } from './types.ts';
2
+ declare function $$render<T extends DialogTitleTag>(): {
3
+ props: DialogTitleProps<T>;
4
+ exports: {};
5
+ bindings: "ref";
6
+ slots: {};
7
+ events: {};
8
+ };
9
+ declare class __sveltets_Render<T extends DialogTitleTag> {
10
+ props(): ReturnType<typeof $$render<T>>['props'];
11
+ events(): ReturnType<typeof $$render<T>>['events'];
12
+ slots(): ReturnType<typeof $$render<T>>['slots'];
13
+ bindings(): "ref";
14
+ exports(): {};
15
+ }
16
+ interface $$IsomorphicComponent {
17
+ new <T extends DialogTitleTag>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
18
+ $$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
19
+ } & ReturnType<__sveltets_Render<T>['exports']>;
20
+ <T extends DialogTitleTag>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
21
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
22
+ }
23
+ declare const DialogTitle: $$IsomorphicComponent;
24
+ type DialogTitle<T extends DialogTitleTag> = InstanceType<typeof DialogTitle<T>>;
25
+ export default DialogTitle;
@@ -0,0 +1,23 @@
1
+ <script lang="ts">
2
+ import { Button } from '../../index.js';
3
+ import { getDialogContext } from './dialog.svelte.js';
4
+ import type { DialogTriggerProps } from './types.js';
5
+
6
+ let { children }: DialogTriggerProps = $props();
7
+
8
+ const CONTEXT = getDialogContext();
9
+
10
+ if (!CONTEXT) {
11
+ throw new Error('DialogTrigger must be used within a Dialog component');
12
+ }
13
+
14
+ const { methods } = CONTEXT;
15
+ </script>
16
+
17
+ <Button class="dialog-trigger" onclick={methods.openDialog}>
18
+ {#if children}
19
+ {@render children()}
20
+ {:else}
21
+ Open Dialog
22
+ {/if}
23
+ </Button>
@@ -0,0 +1,4 @@
1
+ import type { DialogTriggerProps } from './types.ts';
2
+ declare const DialogTrigger: import("svelte").Component<DialogTriggerProps, {}, "">;
3
+ type DialogTrigger = ReturnType<typeof DialogTrigger>;
4
+ export default DialogTrigger;
@@ -0,0 +1,64 @@
1
+ <script lang="ts">
2
+ import { setDialogContext } from './dialog.svelte.js';
3
+ import type { DialogContext, DialogProps } from './types.js';
4
+
5
+ let { type = 'modal', open = $bindable(), onOpenChange, children }: DialogProps = $props();
6
+
7
+ let dialogRef: HTMLDialogElement | undefined = $state();
8
+
9
+ let titleId: string | undefined = $state();
10
+
11
+ const config: DialogContext['config'] = $derived({
12
+ type
13
+ });
14
+
15
+ const _state: DialogContext['state'] = {
16
+ get open() {
17
+ return open;
18
+ },
19
+ get dialogRef() {
20
+ return dialogRef;
21
+ },
22
+ set dialogRef(v) {
23
+ dialogRef = v;
24
+ },
25
+ get titleId() {
26
+ return titleId;
27
+ },
28
+ set titleId(v) {
29
+ titleId = v;
30
+ }
31
+ };
32
+
33
+ const methods: DialogContext['methods'] = $derived({
34
+ openDialog: () => {
35
+ if (type !== 'non-modal') {
36
+ dialogRef?.showModal();
37
+ } else {
38
+ open = true;
39
+ }
40
+ onOpenChange?.(true);
41
+ },
42
+ closeDialog: () => {
43
+ if (type !== 'non-modal') {
44
+ dialogRef?.close();
45
+ } else {
46
+ open = false;
47
+ }
48
+ onOpenChange?.(false);
49
+ }
50
+ });
51
+
52
+ export function openDialog() {
53
+ methods.openDialog();
54
+ }
55
+
56
+ export function closeDialog() {
57
+ methods.closeDialog();
58
+ }
59
+
60
+ // svelte-ignore state_referenced_locally
61
+ setDialogContext({ config, state: _state, events: null, methods });
62
+ </script>
63
+
64
+ {@render children?.()}
@@ -0,0 +1,7 @@
1
+ import type { DialogProps } from './types.ts';
2
+ declare const Dialog: import("svelte").Component<DialogProps, {
3
+ openDialog: () => void;
4
+ closeDialog: () => void;
5
+ }, "open">;
6
+ type Dialog = ReturnType<typeof Dialog>;
7
+ export default Dialog;
@@ -0,0 +1,2 @@
1
+ import { createFSContext } from "../../internal/context.js";
2
+ export const [getDialogContext, setDialogContext] = createFSContext();
@@ -0,0 +1,131 @@
1
+ # Dialog
2
+
3
+ A dialog is a window overlaid on either the primary window or another dialog window. Windows under a modal dialog are inert. That is, users cannot interact with content outside an active dialog window. Inert content outside an active dialog is typically visually obscured or dimmed so it is difficult to discern, and in some implementations, attempts to interact with the inert content cause the dialog to close.
4
+
5
+ The Dialog is composed of several components that work together through a shared context:
6
+
7
+ - `Dialog`: The root component that creates the state and provides context to its children.
8
+ - `DialogTrigger`: A button that opens the dialog when clicked.
9
+ - `DialogSurface`: The `<dialog>` element that hosts the dialog content.
10
+ - `DialogTitle`: The heading of the dialog. Renders as an `h3` by default.
11
+ - `DialogContent`: The scrollable body of the dialog.
12
+ - `DialogActions`: The footer that holds action buttons.
13
+
14
+ ## Usage
15
+
16
+ ```svelte
17
+ <script>
18
+ import {
19
+ Dialog,
20
+ DialogTrigger,
21
+ DialogSurface,
22
+ DialogTitle,
23
+ DialogContent,
24
+ DialogActions,
25
+ Button
26
+ } from 'fluentui-svelte';
27
+
28
+ let dialog = $state();
29
+ </script>
30
+
31
+ <Dialog bind:this={dialog}>
32
+ <DialogTrigger>Open Dialog</DialogTrigger>
33
+ <DialogSurface>
34
+ <DialogTitle>Dialog Title</DialogTitle>
35
+ <DialogContent>
36
+ <p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
37
+ </DialogContent>
38
+ <DialogActions fluid>
39
+ <Button>Save</Button>
40
+ <Button appearance="standard" onclick={() => dialog.closeDialog()}>Close</Button>
41
+ </DialogActions>
42
+ </DialogSurface>
43
+ </Dialog>
44
+ ```
45
+
46
+ ## Examples
47
+
48
+ ### With Actions
49
+
50
+ Add a `DialogActions` region to render action buttons in the dialog footer. Use `bind:this` on the `Dialog` to call `closeDialog()` programmatically.
51
+
52
+ ```svelte
53
+ <script>
54
+ import {
55
+ Dialog,
56
+ DialogTrigger,
57
+ DialogSurface,
58
+ DialogTitle,
59
+ DialogContent,
60
+ DialogActions,
61
+ Button
62
+ } from 'fluentui-svelte';
63
+ let dialog = $state();
64
+ </script>
65
+
66
+ <Dialog bind:this={dialog}>
67
+ <DialogTrigger>Actions Dialog</DialogTrigger>
68
+ <DialogSurface>
69
+ <DialogTitle>Dialog Title</DialogTitle>
70
+ <DialogContent>
71
+ <p>Dialog body content.</p>
72
+ </DialogContent>
73
+ <DialogActions fluid>
74
+ <Button style="flex: 1 1 auto;">Save</Button>
75
+ <Button style="flex: 1 1 auto;" appearance="standard" onclick={() => dialog.closeDialog()}>Close</Button>
76
+ </DialogActions>
77
+ </DialogSurface>
78
+ </Dialog>
79
+ ```
80
+
81
+ ## Dialog Props
82
+
83
+ | Name | Type | Description |
84
+ | -------------- | ----------------------------------- | -------------------------------------------------- |
85
+ | `type` | `'modal' \| 'non-modal' \| 'alert'` | The behavior type of the dialog. Default: `modal`. |
86
+ | `open` | bindable `boolean` | Whether the dialog is open. |
87
+ | `onOpenChange` | `(open: boolean) => void` | Callback fired when the dialog opens or closes. |
88
+ | `children` | `Snippet` | The dialog sub-components to render. |
89
+
90
+ ## DialogTrigger Props
91
+
92
+ | Name | Type | Description |
93
+ | -------------- | ----------------------- | ---------------------------------------- |
94
+ | `ref` | `HTMLButtonElement` | The DOM reference of the trigger button. |
95
+ | `children` | `Snippet` | The content of the trigger button. |
96
+ | ...ButtonProps | `ButtonProps<'button'>` | Inherits all `Button` props. |
97
+
98
+ ## DialogSurface Props
99
+
100
+ | Name | Type | Description |
101
+ | ------------- | ----------------------------------- | ------------------------------------------------ |
102
+ | `ref` | bindable `HTMLDialogElement` | The DOM reference of the dialog element. |
103
+ | `children` | `Snippet` | The content to render inside the dialog surface. |
104
+ | ...Attributes | `HTMLAttributes<HTMLDialogElement>` | All native `<dialog>` attributes are forwarded. |
105
+
106
+ ## DialogTitle Props
107
+
108
+ | Name | Type | Description |
109
+ | ------------- | ---------------------- | ------------------------------------------------------------- |
110
+ | `as` | `'div' \| 'h1'`–`'h6'` | The element to render the title as. Default: `h3`. |
111
+ | `ref` | bindable element | The DOM reference of the title element. |
112
+ | `children` | `Snippet` | The title content. |
113
+ | ...Attributes | Polymorphic | All HTML attributes of the chosen `as` element are forwarded. |
114
+
115
+ ## DialogContent Props
116
+
117
+ | Name | Type | Description |
118
+ | ------------- | -------------------------------- | --------------------------------------------- |
119
+ | `ref` | `HTMLDivElement` | The DOM reference of the content element. |
120
+ | `children` | `Snippet` | The content to render inside the dialog body. |
121
+ | ...Attributes | `HTMLAttributes<HTMLDivElement>` | All native `<div>` attributes are forwarded. |
122
+
123
+ ## DialogActions Props
124
+
125
+ | Name | Type | Description |
126
+ | ------------- | -------------------------------- | ------------------------------------------------------- |
127
+ | `ref` | bindable `HTMLDivElement` | The DOM reference of the actions element. |
128
+ | `position` | `'start' \| 'center' \| 'end'` | Horizontal alignment of the actions. Default: `end`. |
129
+ | `fluid` | `boolean` | Whether the actions container uses a full-width layout. |
130
+ | `children` | `Snippet` | The action elements to render, typically buttons. |
131
+ | ...Attributes | `HTMLAttributes<HTMLDivElement>` | All native `<div>` attributes are forwarded. |
@@ -0,0 +1,92 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { FSContext } from '../../internal/index.js';
3
+ import type { HTMLAttributes } from 'svelte/elements';
4
+ import type { ButtonProps } from '../button/types.ts';
5
+ import type { PolymorphicProps, XDirection } from '../../types/index.js';
6
+ export type DialogType = 'modal' | 'non-modal' | 'alert';
7
+ export type DialogTitleTag = 'div' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
8
+ /** @propsmith DialogProps */
9
+ export type DialogProps = {
10
+ /** How the dialog behaves once open.
11
+ *
12
+ * `modal`: blocks the page behind it and traps the focus.
13
+ *
14
+ * `non-modal`: leaves the page behind it interactive.
15
+ *
16
+ * `alert`: a modal that cannot be dismissed with Escape or by clicking outside.
17
+ * @default 'modal'
18
+ */
19
+ type?: DialogType;
20
+ /** Controls the open state of the dialog.
21
+ * @bindable
22
+ */
23
+ open?: boolean;
24
+ /** Called whenever the dialog opens or closes. */
25
+ onOpenChange?: (open: boolean) => void;
26
+ /** The parts of the dialog: a trigger and a surface. */
27
+ children?: Snippet;
28
+ };
29
+ /** @propsmith DialogSurfaceProps */
30
+ export type DialogSurfaceProps = {
31
+ /** The DOM reference of the dialog element.
32
+ * @bindable
33
+ */
34
+ ref?: HTMLDialogElement;
35
+ } & HTMLAttributes<HTMLDialogElement>;
36
+ /** @propsmith DialogTriggerProps */
37
+ export type DialogTriggerProps = {
38
+ /** The DOM reference of the trigger element. */
39
+ ref?: HTMLButtonElement;
40
+ } & ButtonProps<'button'>;
41
+ /** @propsmith DialogContentProps */
42
+ export type DialogContentProps = {
43
+ /** The DOM reference of the content element. */
44
+ ref?: HTMLDivElement;
45
+ } & HTMLAttributes<HTMLDivElement>;
46
+ /** @propsmith DialogActionsProps */
47
+ export type DialogActionsProps = {
48
+ /** The DOM reference of the actions element.
49
+ * @bindable
50
+ */
51
+ ref?: HTMLDivElement;
52
+ /** Stretches every action to share the available width evenly. */
53
+ fluid?: boolean;
54
+ /** Where the actions sit along the main axis.
55
+ * @default 'end'
56
+ */
57
+ position?: XDirection;
58
+ } & HTMLAttributes<HTMLDivElement>;
59
+ type DialogTitleRefType = {
60
+ div: HTMLDivElement;
61
+ h1: HTMLHeadingElement;
62
+ h2: HTMLHeadingElement;
63
+ h3: HTMLHeadingElement;
64
+ h4: HTMLHeadingElement;
65
+ h5: HTMLHeadingElement;
66
+ h6: HTMLHeadingElement;
67
+ };
68
+ /** @propsmith DialogTitleProps */
69
+ export type DialogTitleProps<T extends DialogTitleTag> = {
70
+ /** The DOM reference of the title element.
71
+ * @type HTMLDivElement | HTMLHeadingElement
72
+ * @bindable
73
+ */
74
+ ref?: DialogTitleRefType[T];
75
+ /** The HTML element to render the title as.
76
+ * @type DialogTitleTag
77
+ * @default 'h3'
78
+ */
79
+ as?: T;
80
+ } & PolymorphicProps<T>;
81
+ export type DialogContext = FSContext<{
82
+ type: DialogType;
83
+ }, {
84
+ dialogRef: HTMLDialogElement | undefined;
85
+ readonly open: boolean | undefined;
86
+ /** Set by `DialogTitle`, to allow the surface pointing `aria-labelledby` at it. */
87
+ titleId: string | undefined;
88
+ }, null, {
89
+ openDialog: () => void;
90
+ closeDialog: () => void;
91
+ }>;
92
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,120 @@
1
+ <script lang="ts" generics="Tag extends DividerGenerics = 'div'">
2
+ import type { DividerProps, DividerGenerics } from './types.js';
3
+
4
+ let {
5
+ as = 'div' as Tag,
6
+ ref = $bindable(),
7
+ vertical,
8
+ alignContent = 'center',
9
+ appearance = 'default',
10
+ inset,
11
+ children,
12
+ ...attributes
13
+ }: DividerProps<Tag> = $props();
14
+ </script>
15
+
16
+ <!--
17
+ @component
18
+ A divider visually separates content into groups. It supports horizontal and vertical orientations, optional label content, and multiple appearances.
19
+
20
+ - Usage:
21
+ ```tsx
22
+ <script>
23
+ import { Divider } from 'fluentui-svelte';
24
+ </script>
25
+
26
+ <Divider />
27
+ <Divider appearance="accent">Section</Divider>
28
+ <Divider vertical />
29
+ ```
30
+ -->
31
+ <svelte:element
32
+ this={as}
33
+ bind:this={ref}
34
+ role="separator"
35
+ class={['fs-divider', appearance, `align-${alignContent}`, { inset, vertical }]}
36
+ style=" --divider-margin: {children ? (vertical ? '0.5rem' : '0.75rem') : '0'}"
37
+ aria-orientation={vertical ? 'vertical' : 'horizontal'}
38
+ {...attributes}
39
+ >
40
+ {@render children?.()}
41
+ </svelte:element>
42
+
43
+ <style>
44
+ .fs-divider {
45
+ width: 100%;
46
+ height: 1px;
47
+ display: flex;
48
+ align-items: center;
49
+ justify-content: center;
50
+ color: var(--fs-text-secondary);
51
+ background: unset;
52
+ border: unset;
53
+ &::before,
54
+ &::after {
55
+ content: '';
56
+ display: flex;
57
+ flex: 1;
58
+ background-color: var(--fs-control-strong-stroke-disabled);
59
+ height: 1px;
60
+ min-width: 0.5rem;
61
+ }
62
+ &::before {
63
+ margin-right: var(--divider-margin);
64
+ }
65
+ &::after {
66
+ margin-left: var(--divider-margin);
67
+ }
68
+ &.align-start::before {
69
+ max-width: 0.5rem;
70
+ max-height: 0.5rem;
71
+ }
72
+ &.align-end::after {
73
+ max-width: 0.5rem;
74
+ max-height: 0.5rem;
75
+ }
76
+ &.inset {
77
+ padding-inline: 0.75rem;
78
+ }
79
+ &.vertical {
80
+ flex-direction: column;
81
+ width: max-content;
82
+ height: inherit;
83
+ &::before,
84
+ &::after {
85
+ width: 1px;
86
+ min-width: 1px;
87
+ height: calc((100% / 2) - var(--divider-margin));
88
+ min-height: 0.5rem;
89
+ margin-inline: 0;
90
+ }
91
+ &::before {
92
+ margin-bottom: var(--divider-margin);
93
+ }
94
+ &::after {
95
+ margin-top: var(--divider-margin);
96
+ }
97
+ }
98
+ &.accent {
99
+ color: var(--fs-accent-text-primary);
100
+ &::before,
101
+ &::after {
102
+ background-color: var(--fs-accent-fill-default);
103
+ }
104
+ }
105
+ &.subtle {
106
+ color: var(--fs-text-disabled);
107
+ &::before,
108
+ &::after {
109
+ background-color: var(--fs-control-stroke-secondary);
110
+ }
111
+ }
112
+ &.strong {
113
+ color: var(--fs-text-primary);
114
+ &::before,
115
+ &::after {
116
+ background-color: var(--fs-control-strong-stroke-default);
117
+ }
118
+ }
119
+ }
120
+ </style>
@@ -0,0 +1,39 @@
1
+ import type { DividerProps, DividerGenerics } from './types.ts';
2
+ declare function $$render<Tag extends DividerGenerics = 'div'>(): {
3
+ props: DividerProps<Tag>;
4
+ exports: {};
5
+ bindings: "ref";
6
+ slots: {};
7
+ events: {};
8
+ };
9
+ declare class __sveltets_Render<Tag extends DividerGenerics = 'div'> {
10
+ props(): ReturnType<typeof $$render<Tag>>['props'];
11
+ events(): ReturnType<typeof $$render<Tag>>['events'];
12
+ slots(): ReturnType<typeof $$render<Tag>>['slots'];
13
+ bindings(): "ref";
14
+ exports(): {};
15
+ }
16
+ interface $$IsomorphicComponent {
17
+ new <Tag extends DividerGenerics = 'div'>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<Tag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<Tag>['props']>, ReturnType<__sveltets_Render<Tag>['events']>, ReturnType<__sveltets_Render<Tag>['slots']>> & {
18
+ $$bindings?: ReturnType<__sveltets_Render<Tag>['bindings']>;
19
+ } & ReturnType<__sveltets_Render<Tag>['exports']>;
20
+ <Tag extends DividerGenerics = 'div'>(internal: unknown, props: ReturnType<__sveltets_Render<Tag>['props']> & {}): ReturnType<__sveltets_Render<Tag>['exports']>;
21
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
22
+ }
23
+ /**
24
+ * A divider visually separates content into groups. It supports horizontal and vertical orientations, optional label content, and multiple appearances.
25
+ *
26
+ * - Usage:
27
+ * ```tsx
28
+ * <script>
29
+ * import { Divider } from 'fluentui-svelte';
30
+ * </script>
31
+ *
32
+ * <Divider />
33
+ * <Divider appearance="accent">Section</Divider>
34
+ * <Divider vertical />
35
+ * ```
36
+ */
37
+ declare const Divider: $$IsomorphicComponent;
38
+ type Divider<Tag extends DividerGenerics = 'div'> = InstanceType<typeof Divider<Tag>>;
39
+ export default Divider;
@@ -0,0 +1,83 @@
1
+ # Divider
2
+
3
+ The Divider component is used to visually separate content within a layout. It can be oriented horizontally or vertically.
4
+
5
+ ## Usage
6
+
7
+ ```svelte
8
+ <script>
9
+ import { Divider } from 'fluentui-svelte';
10
+ </script>
11
+
12
+ <Divider>Divider</Divider>
13
+ ```
14
+
15
+ ## Divider API
16
+
17
+ A brief explanation of the props that really need explaining. You can see the rest of the props in the Divider Props table below.
18
+
19
+ ## Examples
20
+
21
+ ### Appearance
22
+
23
+ Controls the color of the divider. Possible values: `'standard'`, `'accent'`, `'subtle'`.
24
+
25
+ ```svelte
26
+ <Divider appearance="standard">Standard Divider</Divider>
27
+ <Divider appearance="accent">Accent Divider</Divider>
28
+ <Divider appearance="subtle">Subtle Divider</Divider>
29
+ ```
30
+
31
+ ### Vertical
32
+
33
+ When `vertical` is set, the divider renders on the vertical axis instead of the horizontal one. Make sure the parent container has a defined height so the divider is visible.
34
+
35
+ ```svelte
36
+ <Divider vertical>Vertical</Divider>
37
+ ```
38
+
39
+ ### Align Content
40
+
41
+ The `alignContent` prop controls where the label content (children) is positioned along the divider. Possible values: `'start'`, `'center'`, `'end'`.
42
+
43
+ ```svelte
44
+ <Divider alignContent="start">Start Aligned Divider</Divider>
45
+ <Divider alignContent="center">Center Aligned Divider</Divider>
46
+ <Divider alignContent="end">End Aligned Divider</Divider>
47
+ ```
48
+
49
+ It also works combined with the `vertical` prop:
50
+
51
+ ```svelte
52
+ <Divider alignContent="start" vertical>Start</Divider>
53
+ <Divider alignContent="center" vertical>Center</Divider>
54
+ <Divider alignContent="end" vertical>End</Divider>
55
+ ```
56
+
57
+ ### Inset
58
+
59
+ When `inset` is set, the divider gets some inline padding applied, useful when it's placed inside a container that has content touching its edges.
60
+
61
+ ```svelte
62
+ <Divider inset>Inset Divider</Divider>
63
+ ```
64
+
65
+ ### Custom element
66
+
67
+ The `as` prop lets you change the underlying HTML element rendered by the divider. Possible values: `'div'`, `'hr'`, `'span'`.
68
+
69
+ ```svelte
70
+ <Divider as="hr" />
71
+ ```
72
+
73
+ ## Divider Props
74
+
75
+ | Name | Type | Description |
76
+ | -------------- | ---------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
77
+ | `as` | `string` | The HTML element to render the divider as. Possible values: `'div'`, `'hr'`, `'span'`. |
78
+ | `vertical` | `boolean` | Whether the divider is rendered vertically instead of horizontally. |
79
+ | `alignContent` | `string` | The alignment of the content within the divider. Possible values: `'start'`, `'center'`, `'end'`. |
80
+ | `appearance` | `string` | The appearance of the divider. Possible values: `'default'`, `'accent'`, `'standard'`, `'subtle'`. |
81
+ | `inset` | `boolean` | Whether the divider has inline padding applied. |
82
+ | `ref` | `HTMLDivElement \| HTMLHRElement \| HTMLSpanElement` | The DOM reference of the divider element, its type depends on the `as` prop. |
83
+ | `children` | `Snippet` | The content to render as a label within the divider. |
@@ -0,0 +1,32 @@
1
+ import type { Appearances, PolymorphicProps, XDirection } from '../../types/index.js';
2
+ /** @propsmith DividerProps */
3
+ export type DividerProps<Tag extends DividerGenerics = 'div'> = {
4
+ /** The HTML element to render the divider as.
5
+ * @type 'div' | 'hr' | 'span'
6
+ * @default 'div'
7
+ */
8
+ as?: Tag;
9
+ /** The DOM reference of the divider element.
10
+ * @type HTMLDivElement | HTMLHRElement | HTMLSpanElement
11
+ * @bindable
12
+ */
13
+ ref?: DividerElement[Tag];
14
+ /** Renders the divider vertically instead of horizontally. */
15
+ vertical?: boolean;
16
+ /** Where the content of the divider sits along the line.
17
+ * @default 'center'
18
+ */
19
+ alignContent?: XDirection;
20
+ /** Removes the padding around the divider line. */
21
+ inset?: boolean;
22
+ /** The divider line can be styled for greater emphasis or to be subtle.
23
+ * @default 'default'
24
+ */
25
+ appearance?: Appearances | 'default';
26
+ } & PolymorphicProps<Tag>;
27
+ export type DividerElement = {
28
+ div: HTMLDivElement;
29
+ hr: HTMLHRElement;
30
+ span: HTMLSpanElement;
31
+ };
32
+ export type DividerGenerics = 'div' | 'hr' | 'span';
@@ -0,0 +1 @@
1
+ export {};