fluid-ui-svelte 0.2.4 → 0.3.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 (132) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +16 -5
  3. package/dist/app.css +284 -0
  4. package/dist/base/Button.svelte +35 -0
  5. package/dist/base/Button.svelte.d.ts +14 -0
  6. package/dist/base/Container.svelte +34 -0
  7. package/dist/base/Container.svelte.d.ts +14 -0
  8. package/dist/base/Image.svelte +21 -0
  9. package/dist/base/Image.svelte.d.ts +8 -0
  10. package/dist/base/InputField.svelte +33 -0
  11. package/dist/base/InputField.svelte.d.ts +10 -0
  12. package/dist/base/Link.svelte +23 -0
  13. package/dist/base/Link.svelte.d.ts +10 -0
  14. package/dist/base/List.svelte +39 -0
  15. package/dist/base/List.svelte.d.ts +33 -0
  16. package/dist/base/Table.svelte +80 -0
  17. package/dist/base/Table.svelte.d.ts +42 -0
  18. package/dist/base/Text.svelte +45 -0
  19. package/dist/base/Text.svelte.d.ts +11 -0
  20. package/dist/base/index.d.ts +8 -0
  21. package/dist/base/index.js +8 -0
  22. package/dist/components/Accordion.svelte +44 -1
  23. package/dist/components/Accordion.svelte.d.ts +14 -25
  24. package/dist/components/Calendar.svelte +62 -0
  25. package/dist/components/Calendar.svelte.d.ts +12 -25
  26. package/dist/components/Carousel.svelte +114 -0
  27. package/dist/components/Carousel.svelte.d.ts +37 -0
  28. package/dist/components/CodeBlock.svelte +33 -0
  29. package/dist/components/CodeBlock.svelte.d.ts +9 -0
  30. package/dist/components/Drawer.svelte +77 -22
  31. package/dist/components/Drawer.svelte.d.ts +21 -6
  32. package/dist/components/{Badge.svelte.d.ts → ImageCrop.svelte.d.ts} +3 -3
  33. package/dist/components/Page.svelte +26 -0
  34. package/dist/components/Page.svelte.d.ts +11 -0
  35. package/dist/components/Switch.svelte +22 -20
  36. package/dist/components/Switch.svelte.d.ts +9 -4
  37. package/dist/components/index.d.ts +8 -0
  38. package/dist/components/index.js +8 -0
  39. package/dist/index.d.ts +2 -33
  40. package/dist/index.js +2 -36
  41. package/dist/{community/components/index.js → utilities/accesibility.js} +1 -0
  42. package/dist/utilities/applyCharacterFilter.d.ts +1 -0
  43. package/dist/utilities/applyCharacterFilter.js +6 -0
  44. package/dist/utilities/calendar.d.ts +10 -0
  45. package/dist/utilities/calendar.js +112 -0
  46. package/dist/utilities/carousel.d.ts +2 -0
  47. package/dist/utilities/carousel.js +27 -0
  48. package/dist/utilities/codeBlockContents.d.ts +15 -0
  49. package/dist/utilities/codeBlockContents.js +298 -0
  50. package/dist/utilities/imageCrop.d.ts +33 -0
  51. package/dist/utilities/imageCrop.js +217 -0
  52. package/dist/utilities/mergeClasses.d.ts +1 -0
  53. package/dist/utilities/mergeClasses.js +3 -0
  54. package/package.json +50 -33
  55. package/dist/community/prebuilt/index.d.ts +0 -1
  56. package/dist/community/prebuilt/index.js +0 -1
  57. package/dist/components/Breadcrumb.svelte +0 -1
  58. package/dist/components/Breadcrumb.svelte.d.ts +0 -26
  59. package/dist/components/Dropdown.svelte +0 -59
  60. package/dist/components/Dropdown.svelte.d.ts +0 -20
  61. package/dist/components/Dropzone.svelte +0 -1
  62. package/dist/components/Dropzone.svelte.d.ts +0 -26
  63. package/dist/components/InteractiveScrollArea.svelte +0 -1
  64. package/dist/components/InteractiveScrollArea.svelte.d.ts +0 -26
  65. package/dist/components/Pagination.svelte +0 -1
  66. package/dist/components/Pagination.svelte.d.ts +0 -26
  67. package/dist/components/Progress.svelte +0 -1
  68. package/dist/components/Progress.svelte.d.ts +0 -26
  69. package/dist/components/Tabs.svelte +0 -1
  70. package/dist/components/Tabs.svelte.d.ts +0 -26
  71. package/dist/components/Tooltip.svelte +0 -1
  72. package/dist/components/Tooltip.svelte.d.ts +0 -26
  73. package/dist/components/charts/BatteryChart.svelte +0 -0
  74. package/dist/components/charts/BatteryChart.svelte.d.ts +0 -26
  75. package/dist/components/charts/LineChart.svelte +0 -0
  76. package/dist/components/charts/LineChart.svelte.d.ts +0 -26
  77. package/dist/components/charts/PieChart.svelte +0 -0
  78. package/dist/components/charts/PieChart.svelte.d.ts +0 -26
  79. package/dist/components/notification/NotificationArea.svelte +0 -21
  80. package/dist/components/notification/NotificationArea.svelte.d.ts +0 -7
  81. package/dist/prebuilt/FormBuilder.svelte +0 -1
  82. package/dist/prebuilt/FormBuilder.svelte.d.ts +0 -26
  83. package/dist/prebuilt/document/Document.svelte +0 -1
  84. package/dist/prebuilt/document/Document.svelte.d.ts +0 -26
  85. package/dist/prebuilt/document/DocumentBlock.svelte +0 -1
  86. package/dist/prebuilt/document/DocumentBlock.svelte.d.ts +0 -26
  87. package/dist/prebuilt/document/DocumentPage.svelte +0 -1
  88. package/dist/prebuilt/document/DocumentPage.svelte.d.ts +0 -26
  89. package/dist/prebuilt/timeline/Timeline.svelte +0 -0
  90. package/dist/prebuilt/timeline/Timeline.svelte.d.ts +0 -26
  91. package/dist/prebuilt/timeline/TimelineItem.svelte +0 -0
  92. package/dist/prebuilt/timeline/TimelineItem.svelte.d.ts +0 -26
  93. package/dist/primitives/Button.svelte +0 -53
  94. package/dist/primitives/Button.svelte.d.ts +0 -13
  95. package/dist/primitives/Container.svelte +0 -51
  96. package/dist/primitives/Container.svelte.d.ts +0 -10
  97. package/dist/primitives/Dialog.svelte +0 -39
  98. package/dist/primitives/Dialog.svelte.d.ts +0 -10
  99. package/dist/primitives/Divider.svelte +0 -14
  100. package/dist/primitives/Divider.svelte.d.ts +0 -6
  101. package/dist/primitives/Form.svelte +0 -18
  102. package/dist/primitives/Form.svelte.d.ts +0 -8
  103. package/dist/primitives/Image.svelte +0 -57
  104. package/dist/primitives/Image.svelte.d.ts +0 -12
  105. package/dist/primitives/Input.svelte +0 -23
  106. package/dist/primitives/Input.svelte.d.ts +0 -9
  107. package/dist/primitives/Label.svelte +0 -18
  108. package/dist/primitives/Label.svelte.d.ts +0 -8
  109. package/dist/primitives/Link.svelte +0 -18
  110. package/dist/primitives/Link.svelte.d.ts +0 -8
  111. package/dist/primitives/Table.svelte +0 -18
  112. package/dist/primitives/Table.svelte.d.ts +0 -8
  113. package/dist/primitives/TableBody.svelte +0 -17
  114. package/dist/primitives/TableBody.svelte.d.ts +0 -7
  115. package/dist/primitives/TableData.svelte +0 -18
  116. package/dist/primitives/TableData.svelte.d.ts +0 -8
  117. package/dist/primitives/TableFooter.svelte +0 -17
  118. package/dist/primitives/TableFooter.svelte.d.ts +0 -7
  119. package/dist/primitives/TableHead.svelte +0 -18
  120. package/dist/primitives/TableHead.svelte.d.ts +0 -8
  121. package/dist/primitives/TableHeader.svelte +0 -17
  122. package/dist/primitives/TableHeader.svelte.d.ts +0 -7
  123. package/dist/primitives/TableRow.svelte +0 -18
  124. package/dist/primitives/TableRow.svelte.d.ts +0 -8
  125. package/dist/primitives/Text.svelte +0 -46
  126. package/dist/primitives/Text.svelte.d.ts +0 -8
  127. package/dist/primitives/TextArea.svelte +0 -15
  128. package/dist/primitives/TextArea.svelte.d.ts +0 -7
  129. package/dist/types.d.ts +0 -4
  130. package/dist/types.js +0 -1
  131. /package/dist/components/{Badge.svelte → ImageCrop.svelte} +0 -0
  132. /package/dist/{community/components/index.d.ts → utilities/accesibility.d.ts} +0 -0
@@ -0,0 +1,80 @@
1
+ <script lang="ts" generics="T,U,V">
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ import { mergeClasses } from '../utilities/mergeClasses.js';
4
+ import type { Snippet } from 'svelte';
5
+
6
+ const {
7
+ caption = '',
8
+ tableHeadItems,
9
+ tableRowItems,
10
+ tableFooterItems,
11
+ headTemplate,
12
+ bodyTemplate,
13
+ footerTemplate,
14
+ class: className = '',
15
+ captionClass = '',
16
+ headClass = '',
17
+ bodyClass = '',
18
+ rowClass = '',
19
+ cellClass = '',
20
+ footerClass = '',
21
+ overrideDefaultStyling = false,
22
+ ...rest
23
+ }: {
24
+ caption?: string;
25
+ tableHeadItems: Array<T>;
26
+ tableRowItems: Array<Array<U>>;
27
+ tableFooterItems: Array<V>;
28
+ headTemplate: Snippet<[T]>;
29
+ bodyTemplate: Snippet<[U]>;
30
+ footerTemplate: Snippet<[V]>;
31
+ class?: string;
32
+ captionClass?: string;
33
+ headClass?: string;
34
+ bodyClass?: string;
35
+ rowClass?: string;
36
+ cellClass?: string;
37
+ footerClass?: string;
38
+ overrideDefaultStyling?: boolean;
39
+ } & HTMLAttributes<HTMLTableElement> = $props();
40
+ </script>
41
+
42
+ <table
43
+ class={mergeClasses(className, overrideDefaultStyling ? '' : 'fluid-table')}
44
+ {...rest}
45
+ >
46
+ {#if caption}
47
+ <caption class={mergeClasses(captionClass, overrideDefaultStyling ? '' : 'fluid-table-caption')}>
48
+ {caption}
49
+ </caption>
50
+ {/if}
51
+ <thead class={mergeClasses(headClass, overrideDefaultStyling ? '' : 'fluid-table-head')}>
52
+ <tr class={mergeClasses(rowClass, overrideDefaultStyling ? '' : 'fluid-table-row')}>
53
+ {#each tableHeadItems as item}
54
+ <th class={mergeClasses(cellClass, overrideDefaultStyling ? '' : 'fluid-table-cell')}
55
+ >{@render headTemplate(item)}
56
+ </th>
57
+ {/each}
58
+ </tr>
59
+ </thead>
60
+ <tbody class={mergeClasses(bodyClass, overrideDefaultStyling ? '' : 'fluid-table-body')}>
61
+ {#each tableRowItems as items}
62
+ <tr class={mergeClasses(rowClass, overrideDefaultStyling ? '' : 'fluid-table-row')}>
63
+ {#each items as item}
64
+ <td class={mergeClasses(cellClass, overrideDefaultStyling ? '' : 'fluid-table-cell')}
65
+ >{@render bodyTemplate(item)}</td
66
+ >
67
+ {/each}
68
+ </tr>
69
+ {/each}
70
+ </tbody>
71
+ <tfoot class={mergeClasses(footerClass, overrideDefaultStyling ? '' : 'fluid-table-footer')}>
72
+ <tr class={mergeClasses(rowClass, overrideDefaultStyling ? '' : 'fluid-table-row')}>
73
+ {#each tableFooterItems as item}
74
+ <td class={mergeClasses(cellClass, overrideDefaultStyling ? '' : 'fluid-table-cell')}>
75
+ {@render footerTemplate(item)}
76
+ </td>
77
+ {/each}
78
+ </tr>
79
+ </tfoot>
80
+ </table>
@@ -0,0 +1,42 @@
1
+ import type { HTMLAttributes } from 'svelte/elements';
2
+ import type { Snippet } from 'svelte';
3
+ declare function $$render<T, U, V>(): {
4
+ props: {
5
+ caption?: string;
6
+ tableHeadItems: Array<T>;
7
+ tableRowItems: Array<Array<U>>;
8
+ tableFooterItems: Array<V>;
9
+ headTemplate: Snippet<[T]>;
10
+ bodyTemplate: Snippet<[U]>;
11
+ footerTemplate: Snippet<[V]>;
12
+ class?: string;
13
+ captionClass?: string;
14
+ headClass?: string;
15
+ bodyClass?: string;
16
+ rowClass?: string;
17
+ cellClass?: string;
18
+ footerClass?: string;
19
+ overrideDefaultStyling?: boolean;
20
+ } & HTMLAttributes<HTMLTableElement>;
21
+ exports: {};
22
+ bindings: "";
23
+ slots: {};
24
+ events: {};
25
+ };
26
+ declare class __sveltets_Render<T, U, V> {
27
+ props(): ReturnType<typeof $$render<T, U, V>>['props'];
28
+ events(): ReturnType<typeof $$render<T, U, V>>['events'];
29
+ slots(): ReturnType<typeof $$render<T, U, V>>['slots'];
30
+ bindings(): "";
31
+ exports(): {};
32
+ }
33
+ interface $$IsomorphicComponent {
34
+ new <T, U, V>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T, U, V>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T, U, V>['props']>, ReturnType<__sveltets_Render<T, U, V>['events']>, ReturnType<__sveltets_Render<T, U, V>['slots']>> & {
35
+ $$bindings?: ReturnType<__sveltets_Render<T, U, V>['bindings']>;
36
+ } & ReturnType<__sveltets_Render<T, U, V>['exports']>;
37
+ <T, U, V>(internal: unknown, props: ReturnType<__sveltets_Render<T, U, V>['props']> & {}): ReturnType<__sveltets_Render<T, U, V>['exports']>;
38
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any, any>['bindings']>;
39
+ }
40
+ declare const Table: $$IsomorphicComponent;
41
+ type Table<T, U, V> = InstanceType<typeof Table<T, U, V>>;
42
+ export default Table;
@@ -0,0 +1,45 @@
1
+ <script lang="ts">
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ import { mergeClasses } from '../utilities/mergeClasses.js';
4
+ import type { Snippet } from 'svelte';
5
+
6
+ const {
7
+ type = 'p',
8
+ class: className = '',
9
+ overrideDefaultStyling = false,
10
+ children,
11
+ ...rest
12
+ }: {
13
+ type?:
14
+ | 'p'
15
+ | 'h1'
16
+ | 'h2'
17
+ | 'h3'
18
+ | 'h4'
19
+ | 'h5'
20
+ | 'h6'
21
+ | 'span'
22
+ | 'pre'
23
+ | 'code'
24
+ | 'b'
25
+ | 'strong'
26
+ | 'i'
27
+ | 'em'
28
+ | 'mark'
29
+ | 'small'
30
+ | 'del'
31
+ | 'ins'
32
+ | 'sub'
33
+ | 'sup';
34
+ children?: Snippet;
35
+ class?: string;
36
+ overrideDefaultStyling?: boolean;
37
+ } & HTMLAttributes<HTMLParagraphElement & HTMLHeadingElement & HTMLSpanElement> = $props();
38
+ </script>
39
+
40
+ <svelte:element
41
+ this={type}
42
+ {...rest}
43
+ class={mergeClasses(className, overrideDefaultStyling ? '' : 'fluid-text')}
44
+ >{@render children?.()}
45
+ </svelte:element>
@@ -0,0 +1,11 @@
1
+ import type { HTMLAttributes } from 'svelte/elements';
2
+ import type { Snippet } from 'svelte';
3
+ type $$ComponentProps = {
4
+ type?: 'p' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'span' | 'pre' | 'code' | 'b' | 'strong' | 'i' | 'em' | 'mark' | 'small' | 'del' | 'ins' | 'sub' | 'sup';
5
+ children?: Snippet;
6
+ class?: string;
7
+ overrideDefaultStyling?: boolean;
8
+ } & HTMLAttributes<HTMLParagraphElement & HTMLHeadingElement & HTMLSpanElement>;
9
+ declare const Text: import("svelte").Component<$$ComponentProps, {}, "">;
10
+ type Text = ReturnType<typeof Text>;
11
+ export default Text;
@@ -0,0 +1,8 @@
1
+ export { default as Button } from './Button.svelte';
2
+ export { default as Container } from './Container.svelte';
3
+ export { default as Image } from './Image.svelte';
4
+ export { default as InputField } from './InputField.svelte';
5
+ export { default as Link } from './Link.svelte';
6
+ export { default as List } from './List.svelte';
7
+ export { default as Table } from './Table.svelte';
8
+ export { default as Text } from './Text.svelte';
@@ -0,0 +1,8 @@
1
+ export { default as Button } from './Button.svelte';
2
+ export { default as Container } from './Container.svelte';
3
+ export { default as Image } from './Image.svelte';
4
+ export { default as InputField } from './InputField.svelte';
5
+ export { default as Link } from './Link.svelte';
6
+ export { default as List } from './List.svelte';
7
+ export { default as Table } from './Table.svelte';
8
+ export { default as Text } from './Text.svelte';
@@ -1 +1,44 @@
1
- <!-- TODO -->
1
+ <script lang="ts">
2
+ import { Container, Button } from '../base/index.js';
3
+ import { mergeClasses } from '../utilities/mergeClasses.js';
4
+ import { slide, type TransitionConfig } from 'svelte/transition';
5
+ import type { Snippet } from 'svelte';
6
+
7
+ const {
8
+ variation = '',
9
+ componentId,
10
+ header,
11
+ body,
12
+ transitionFunction = slide,
13
+ transitionDuration = 250
14
+ }: {
15
+ variation?: string;
16
+ componentId?: string;
17
+ header: Snippet<[options: { isExpanded: boolean }]>;
18
+ body: Snippet;
19
+ transitionFunction?: (node: Element, params?: any) => TransitionConfig;
20
+ transitionDuration?: number;
21
+ } = $props();
22
+ const componentState = $state({ isExpanded: false });
23
+ </script>
24
+
25
+ <Container id={componentId} class={mergeClasses(variation, 'fluid-accordion-wrapper')}>
26
+ <Button
27
+ onclick={async () => {
28
+ componentState.isExpanded = !componentState.isExpanded;
29
+ }}
30
+ class={mergeClasses(variation, 'fluid-accordion-header')}
31
+ overrideDefaultStyling
32
+ >
33
+ {@render header(componentState)}
34
+ </Button>
35
+ {#if componentState.isExpanded}
36
+ <Container
37
+ transitionFn={transitionFunction}
38
+ transitionParams={{ duration: transitionDuration }}
39
+ class={mergeClasses(variation, 'fluid-accordion-body')}
40
+ >
41
+ {@render body()}
42
+ </Container>
43
+ {/if}
44
+ </Container>
@@ -1,26 +1,15 @@
1
- export default Accordion;
2
- type Accordion = SvelteComponent<{
3
- [x: string]: never;
4
- }, {
5
- [evt: string]: CustomEvent<any>;
6
- }, {}> & {
7
- $$bindings?: string | undefined;
1
+ import { type TransitionConfig } from 'svelte/transition';
2
+ import type { Snippet } from 'svelte';
3
+ type $$ComponentProps = {
4
+ variation?: string;
5
+ componentId?: string;
6
+ header: Snippet<[options: {
7
+ isExpanded: boolean;
8
+ }]>;
9
+ body: Snippet;
10
+ transitionFunction?: (node: Element, params?: any) => TransitionConfig;
11
+ transitionDuration?: number;
8
12
  };
9
- declare const Accordion: $$__sveltets_2_IsomorphicComponent<{
10
- [x: string]: never;
11
- }, {
12
- [evt: string]: CustomEvent<any>;
13
- }, {}, {}, string>;
14
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
15
- new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
16
- $$bindings?: Bindings;
17
- } & Exports;
18
- (internal: unknown, props: {
19
- $$events?: Events;
20
- $$slots?: Slots;
21
- }): Exports & {
22
- $set?: any;
23
- $on?: any;
24
- };
25
- z_$$bindings?: Bindings;
26
- }
13
+ declare const Accordion: import("svelte").Component<$$ComponentProps, {}, "">;
14
+ type Accordion = ReturnType<typeof Accordion>;
15
+ export default Accordion;
@@ -0,0 +1,62 @@
1
+ <script lang="ts">
2
+ import { Container, Button, Text } from '../base/index.js';
3
+ import {
4
+ applyDate,
5
+ generateCalendarCellStyles,
6
+ generateDaysOfTheMonthFromDate
7
+ } from '../utilities/calendar.js';
8
+ import { mergeClasses } from '../utilities/mergeClasses.js';
9
+
10
+ let {
11
+ variant = '',
12
+ componentId,
13
+ currentDate = new Date().toISOString(),
14
+ startDate = $bindable(),
15
+ endDate = $bindable(),
16
+ weekDays = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
17
+ calendarDays = generateDaysOfTheMonthFromDate(new Date().toISOString()),
18
+ hideRollingDays = false
19
+ }: {
20
+ variant?: string;
21
+ componentId?: string;
22
+ currentDate?: string;
23
+ startDate?: string;
24
+ endDate?: string;
25
+ weekDays?: Array<string>;
26
+ calendarDays?: Array<string>;
27
+ hideRollingDays?: boolean;
28
+ } = $props();
29
+
30
+ function dateSelectionHandler(selectedDate: string) {
31
+ const result = applyDate({ startDate, endDate: endDate }, selectedDate);
32
+ startDate = result.startDate;
33
+ endDate = result.endDate;
34
+ }
35
+
36
+ $effect(() => {
37
+ calendarDays = generateDaysOfTheMonthFromDate(currentDate);
38
+ });
39
+ </script>
40
+
41
+ <Container id={componentId} class={mergeClasses('fluid-calendar-wrapper', variant)}>
42
+ <Container class={mergeClasses('fluid-calendar-header', variant)}>
43
+ <Text>{new Date(currentDate).toLocaleString('default', { month: 'long' })}</Text>
44
+ </Container>
45
+ <Container class={mergeClasses('fluid-calendar-body', variant)}>
46
+ {#each weekDays as day}
47
+ <Text>{day}</Text>
48
+ {/each}
49
+
50
+ {#each calendarDays as cellDay}
51
+ <Button
52
+ onclick={async () => dateSelectionHandler(cellDay)}
53
+ class={mergeClasses(
54
+ variant,
55
+ generateCalendarCellStyles(currentDate, cellDay, startDate, endDate, hideRollingDays)
56
+ )}
57
+ >
58
+ {new Date(cellDay).getDate()}
59
+ </Button>
60
+ {/each}
61
+ </Container>
62
+ </Container>
@@ -1,26 +1,13 @@
1
- export default Calendar;
2
- type Calendar = SvelteComponent<{
3
- [x: string]: never;
4
- }, {
5
- [evt: string]: CustomEvent<any>;
6
- }, {}> & {
7
- $$bindings?: string | undefined;
1
+ type $$ComponentProps = {
2
+ variant?: string;
3
+ componentId?: string;
4
+ currentDate?: string;
5
+ startDate?: string;
6
+ endDate?: string;
7
+ weekDays?: Array<string>;
8
+ calendarDays?: Array<string>;
9
+ hideRollingDays?: boolean;
8
10
  };
9
- declare const Calendar: $$__sveltets_2_IsomorphicComponent<{
10
- [x: string]: never;
11
- }, {
12
- [evt: string]: CustomEvent<any>;
13
- }, {}, {}, string>;
14
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
15
- new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
16
- $$bindings?: Bindings;
17
- } & Exports;
18
- (internal: unknown, props: {
19
- $$events?: Events;
20
- $$slots?: Slots;
21
- }): Exports & {
22
- $set?: any;
23
- $on?: any;
24
- };
25
- z_$$bindings?: Bindings;
26
- }
11
+ declare const Calendar: import("svelte").Component<$$ComponentProps, {}, "startDate" | "endDate">;
12
+ type Calendar = ReturnType<typeof Calendar>;
13
+ export default Calendar;
@@ -0,0 +1,114 @@
1
+ <script lang="ts" generics="T">
2
+ import { Container } from '../base/index.js';
3
+ import { mergeClasses } from '../utilities/mergeClasses.js';
4
+ import { scrollToIndex, getSwipeDirection } from '../utilities/carousel.js';
5
+ import type { Snippet } from 'svelte';
6
+
7
+ let {
8
+ componentId = crypto.randomUUID(),
9
+ variant = '',
10
+ orientation = 'horizontal',
11
+ activeIndex = $bindable(0),
12
+ autoplay = false,
13
+ autoplayDuration = 1000,
14
+ items,
15
+ itemTemplate
16
+ }: {
17
+ componentId?: string;
18
+ variant?: string;
19
+ orientation?: 'horizontal' | 'vertical';
20
+ activeIndex?: number;
21
+ autoplay?: boolean;
22
+ autoplayDuration?: number;
23
+ items: Array<T>;
24
+ itemTemplate: Snippet<[{ item: T; index: number }]>;
25
+ } = $props();
26
+
27
+ let touchStartX = 0;
28
+ let touchStartY = 0;
29
+
30
+ function handleTouchStart(e: TouchEvent) {
31
+ e.stopPropagation();
32
+ e.preventDefault();
33
+ touchStartX = e.changedTouches[0].screenX;
34
+ touchStartY = e.changedTouches[0].screenY;
35
+ }
36
+
37
+ function handleTouchMove(e: TouchEvent) {
38
+ if (!touchStartX || !touchStartY) return;
39
+
40
+ const touchCurrentX = e.changedTouches[0].screenX;
41
+ const touchCurrentY = e.changedTouches[0].screenY;
42
+
43
+ const diffX = Math.abs(touchCurrentX - touchStartX);
44
+ const diffY = Math.abs(touchCurrentY - touchStartY);
45
+
46
+ // If horizontal carousel and horizontal swipe is dominant
47
+ if (orientation === 'horizontal') {
48
+ if (diffX > diffY && diffX > 5) {
49
+ e.preventDefault();
50
+ e.stopPropagation();
51
+ }
52
+ } else {
53
+ // Vertical carousel
54
+ if (diffY > diffX && diffY > 5) {
55
+ e.preventDefault();
56
+ e.stopPropagation();
57
+ }
58
+ }
59
+ }
60
+
61
+ function handleTouchEnd(e: TouchEvent) {
62
+ e.stopPropagation();
63
+ e.preventDefault();
64
+ const touchEndX = e.changedTouches[0].screenX;
65
+ const touchEndY = e.changedTouches[0].screenY;
66
+
67
+ const direction = getSwipeDirection(
68
+ touchStartX,
69
+ touchStartY,
70
+ touchEndX,
71
+ touchEndY,
72
+ 50,
73
+ orientation
74
+ );
75
+
76
+ if (direction === 'next') {
77
+ activeIndex = Math.min(activeIndex + 1, items.length - 1);
78
+ } else if (direction === 'prev') {
79
+ activeIndex = Math.max(activeIndex - 1, 0);
80
+ }
81
+ }
82
+
83
+ $effect(() => {
84
+ if (autoplay && items.length > 0) {
85
+ const interval = setInterval(() => {
86
+ activeIndex = (activeIndex + 1) % items.length;
87
+ }, autoplayDuration);
88
+ return () => clearInterval(interval);
89
+ }
90
+ });
91
+
92
+ $effect(() => {
93
+ if (componentId && items.length > 1) {
94
+ scrollToIndex(componentId, activeIndex, items.length, orientation);
95
+ }
96
+ });
97
+ </script>
98
+
99
+ <Container
100
+ id={componentId}
101
+ ontouchstart={handleTouchStart}
102
+ ontouchmove={handleTouchMove}
103
+ ontouchend={handleTouchEnd}
104
+ class={mergeClasses(
105
+ `fluid-carousel-container ${orientation === 'vertical' ? 'h-full snap-y flex-col overflow-y-auto' : 'flex snap-x overflow-x-auto'}`,
106
+ variant
107
+ )}
108
+ >
109
+ {#each items as item, index}
110
+ <Container class={mergeClasses('fluid-carousel-item', variant)} overrideDefaultStyling>
111
+ {@render itemTemplate({ item, index })}
112
+ </Container>
113
+ {/each}
114
+ </Container>
@@ -0,0 +1,37 @@
1
+ import type { Snippet } from 'svelte';
2
+ declare function $$render<T>(): {
3
+ props: {
4
+ componentId?: string;
5
+ variant?: string;
6
+ orientation?: "horizontal" | "vertical";
7
+ activeIndex?: number;
8
+ autoplay?: boolean;
9
+ autoplayDuration?: number;
10
+ items: Array<T>;
11
+ itemTemplate: Snippet<[{
12
+ item: T;
13
+ index: number;
14
+ }]>;
15
+ };
16
+ exports: {};
17
+ bindings: "activeIndex";
18
+ slots: {};
19
+ events: {};
20
+ };
21
+ declare class __sveltets_Render<T> {
22
+ props(): ReturnType<typeof $$render<T>>['props'];
23
+ events(): ReturnType<typeof $$render<T>>['events'];
24
+ slots(): ReturnType<typeof $$render<T>>['slots'];
25
+ bindings(): "activeIndex";
26
+ exports(): {};
27
+ }
28
+ interface $$IsomorphicComponent {
29
+ new <T>(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']>> & {
30
+ $$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
31
+ } & ReturnType<__sveltets_Render<T>['exports']>;
32
+ <T>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
33
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
34
+ }
35
+ declare const Carousel: $$IsomorphicComponent;
36
+ type Carousel<T> = InstanceType<typeof Carousel<T>>;
37
+ export default Carousel;
@@ -0,0 +1,33 @@
1
+ <script lang="ts">
2
+ import Container from '../base/Container.svelte';
3
+ import Text from '../base/Text.svelte';
4
+
5
+ const {
6
+ variation,
7
+ code = '',
8
+ language = '',
9
+ showLineNumbers = true
10
+ }: {
11
+ variation?: string;
12
+ code?: string;
13
+ language?: string;
14
+ showLineNumbers?: boolean;
15
+ } = $props();
16
+ </script>
17
+
18
+ <Container class="fluid-code-block-container">
19
+ {#each code.split('\n') as line, index}
20
+ <Container class="fluid-code-block-row">
21
+ {#if showLineNumbers}
22
+ <Container class="fluid-code-block-index"
23
+ ><Text class="select-none">{index}</Text></Container
24
+ >
25
+ {/if}
26
+ <Container class="fluid-code-block-content">
27
+ <Text type="pre">
28
+ <Text type="code" class={'language-' + language}>{line}</Text>
29
+ </Text>
30
+ </Container>
31
+ </Container>
32
+ {/each}
33
+ </Container>
@@ -0,0 +1,9 @@
1
+ type $$ComponentProps = {
2
+ variation?: string;
3
+ code?: string;
4
+ language?: string;
5
+ showLineNumbers?: boolean;
6
+ };
7
+ declare const CodeBlock: import("svelte").Component<$$ComponentProps, {}, "">;
8
+ type CodeBlock = ReturnType<typeof CodeBlock>;
9
+ export default CodeBlock;