@sveltekitchen/sveltekitchen 0.0.0-stage → 1.0.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 (142) hide show
  1. package/README.md +137 -2
  2. package/dist/components/Accordion.svelte +36 -0
  3. package/dist/components/Accordion.svelte.d.ts +15 -0
  4. package/dist/components/AccordionItem.svelte +73 -0
  5. package/dist/components/AccordionItem.svelte.d.ts +21 -0
  6. package/dist/components/Alert.svelte +23 -0
  7. package/dist/components/Alert.svelte.d.ts +15 -0
  8. package/dist/components/Badge.svelte +16 -0
  9. package/dist/components/Badge.svelte.d.ts +15 -0
  10. package/dist/components/Button.svelte +43 -0
  11. package/dist/components/Button.svelte.d.ts +25 -0
  12. package/dist/components/Calendar.svelte +88 -0
  13. package/dist/components/Calendar.svelte.d.ts +13 -0
  14. package/dist/components/Card.svelte +68 -0
  15. package/dist/components/Card.svelte.d.ts +25 -0
  16. package/dist/components/Chevron.svelte +36 -0
  17. package/dist/components/Chevron.svelte.d.ts +19 -0
  18. package/dist/components/Collapsible.svelte +46 -0
  19. package/dist/components/Collapsible.svelte.d.ts +19 -0
  20. package/dist/components/ConfirmDialog.svelte +70 -0
  21. package/dist/components/ConfirmDialog.svelte.d.ts +27 -0
  22. package/dist/components/DatePicker.svelte +60 -0
  23. package/dist/components/DatePicker.svelte.d.ts +17 -0
  24. package/dist/components/Divider.svelte +25 -0
  25. package/dist/components/Divider.svelte.d.ts +17 -0
  26. package/dist/components/Dropdown.svelte +100 -0
  27. package/dist/components/Dropdown.svelte.d.ts +21 -0
  28. package/dist/components/Form/Checkbox.svelte +37 -0
  29. package/dist/components/Form/Checkbox.svelte.d.ts +19 -0
  30. package/dist/components/Form/Field.svelte +28 -0
  31. package/dist/components/Form/Field.svelte.d.ts +21 -0
  32. package/dist/components/Form/Input.svelte +56 -0
  33. package/dist/components/Form/Input.svelte.d.ts +29 -0
  34. package/dist/components/Form/MaskedInput.svelte +152 -0
  35. package/dist/components/Form/MaskedInput.svelte.d.ts +25 -0
  36. package/dist/components/Form/Radio.svelte +28 -0
  37. package/dist/components/Form/Radio.svelte.d.ts +19 -0
  38. package/dist/components/Form/RadioGroup.svelte +28 -0
  39. package/dist/components/Form/RadioGroup.svelte.d.ts +19 -0
  40. package/dist/components/Form/Select.svelte +20 -0
  41. package/dist/components/Form/Select.svelte.d.ts +19 -0
  42. package/dist/components/Form/Textarea.svelte +30 -0
  43. package/dist/components/Form/Textarea.svelte.d.ts +25 -0
  44. package/dist/components/Form/Toggle.svelte +21 -0
  45. package/dist/components/Form/Toggle.svelte.d.ts +17 -0
  46. package/dist/components/Modal.svelte +77 -0
  47. package/dist/components/Modal.svelte.d.ts +27 -0
  48. package/dist/components/Pagination.svelte +77 -0
  49. package/dist/components/Pagination.svelte.d.ts +17 -0
  50. package/dist/components/Progress.svelte +34 -0
  51. package/dist/components/Progress.svelte.d.ts +21 -0
  52. package/dist/components/Spinner.svelte +24 -0
  53. package/dist/components/Spinner.svelte.d.ts +13 -0
  54. package/dist/components/Table.svelte +100 -0
  55. package/dist/components/Table.svelte.d.ts +21 -0
  56. package/dist/components/ThemeToggle.svelte +22 -0
  57. package/dist/components/ThemeToggle.svelte.d.ts +11 -0
  58. package/dist/components/Tooltip.svelte +45 -0
  59. package/dist/components/Tooltip.svelte.d.ts +15 -0
  60. package/dist/css/base/root.css +103 -0
  61. package/dist/css/base.css +47 -0
  62. package/dist/css/components/accordion.css +151 -0
  63. package/dist/css/components/alert.css +56 -0
  64. package/dist/css/components/badge.css +56 -0
  65. package/dist/css/components/button.css +171 -0
  66. package/dist/css/components/calendar.css +105 -0
  67. package/dist/css/components/card.css +128 -0
  68. package/dist/css/components/checkbox-radio.css +105 -0
  69. package/dist/css/components/collapsible.css +61 -0
  70. package/dist/css/components/divider.css +42 -0
  71. package/dist/css/components/dock-layout.css +111 -0
  72. package/dist/css/components/dropdown.css +68 -0
  73. package/dist/css/components/floating-shell.css +93 -0
  74. package/dist/css/components/form.css +286 -0
  75. package/dist/css/components/login.css +145 -0
  76. package/dist/css/components/modal.css +179 -0
  77. package/dist/css/components/nav.css +190 -0
  78. package/dist/css/components/nestable.css +187 -0
  79. package/dist/css/components/pagination.css +50 -0
  80. package/dist/css/components/progress.css +50 -0
  81. package/dist/css/components/sidebar.css +78 -0
  82. package/dist/css/components/spinner.css +36 -0
  83. package/dist/css/components/table.css +98 -0
  84. package/dist/css/components/tooltip.css +77 -0
  85. package/dist/css/components/topbar-layout.css +108 -0
  86. package/dist/css/icons/icons.css +52 -0
  87. package/dist/css/index.css +20 -0
  88. package/dist/css/layout/container.css +12 -0
  89. package/dist/css/layout/grid.css +40 -0
  90. package/dist/css/layout/shell.css +185 -0
  91. package/dist/css/overlay/default.css +27 -0
  92. package/dist/css/tokens/colors.css +81 -0
  93. package/dist/css/tokens/radius.css +8 -0
  94. package/dist/css/tokens/shadows.css +23 -0
  95. package/dist/css/tokens/spacing.css +30 -0
  96. package/dist/css/tokens/transitions.css +10 -0
  97. package/dist/css/tokens/typography.css +44 -0
  98. package/dist/index.d.ts +43 -0
  99. package/dist/index.js +52 -0
  100. package/dist/layout/NavItem.svelte +84 -0
  101. package/dist/layout/NavItem.svelte.d.ts +25 -0
  102. package/dist/layout/Shell.svelte +7 -0
  103. package/dist/layout/Shell.svelte.d.ts +13 -0
  104. package/dist/layout/SidebarProfile.svelte +31 -0
  105. package/dist/layout/SidebarProfile.svelte.d.ts +19 -0
  106. package/dist/layouts/AppShell.svelte +60 -0
  107. package/dist/layouts/AppShell.svelte.d.ts +21 -0
  108. package/dist/layouts/BarLayout.svelte +60 -0
  109. package/dist/layouts/BarLayout.svelte.d.ts +21 -0
  110. package/dist/layouts/BottomBarLayout.svelte +23 -0
  111. package/dist/layouts/BottomBarLayout.svelte.d.ts +15 -0
  112. package/dist/layouts/DockLayout.svelte +81 -0
  113. package/dist/layouts/DockLayout.svelte.d.ts +15 -0
  114. package/dist/layouts/FloatingDockLayout.svelte +56 -0
  115. package/dist/layouts/FloatingDockLayout.svelte.d.ts +13 -0
  116. package/dist/layouts/FloatingLayout.svelte +80 -0
  117. package/dist/layouts/FloatingLayout.svelte.d.ts +19 -0
  118. package/dist/layouts/FloatingLeftLayout.svelte +59 -0
  119. package/dist/layouts/FloatingLeftLayout.svelte.d.ts +15 -0
  120. package/dist/layouts/FloatingShell.svelte +80 -0
  121. package/dist/layouts/FloatingShell.svelte.d.ts +19 -0
  122. package/dist/layouts/FloatingTopLayout.svelte +68 -0
  123. package/dist/layouts/FloatingTopLayout.svelte.d.ts +15 -0
  124. package/dist/layouts/HybridLayout.svelte +20 -0
  125. package/dist/layouts/HybridLayout.svelte.d.ts +17 -0
  126. package/dist/layouts/IconRailLayout.svelte +75 -0
  127. package/dist/layouts/IconRailLayout.svelte.d.ts +15 -0
  128. package/dist/layouts/LeftBarLayout.svelte +19 -0
  129. package/dist/layouts/LeftBarLayout.svelte.d.ts +15 -0
  130. package/dist/layouts/RightBarLayout.svelte +21 -0
  131. package/dist/layouts/RightBarLayout.svelte.d.ts +15 -0
  132. package/dist/layouts/SideBar.svelte +86 -0
  133. package/dist/layouts/SideBar.svelte.d.ts +17 -0
  134. package/dist/layouts/SidebarLayout.svelte +11 -0
  135. package/dist/layouts/SidebarLayout.svelte.d.ts +15 -0
  136. package/dist/layouts/TopBar.svelte +90 -0
  137. package/dist/layouts/TopBar.svelte.d.ts +21 -0
  138. package/dist/layouts/TopBarLayout.svelte +26 -0
  139. package/dist/layouts/TopBarLayout.svelte.d.ts +15 -0
  140. package/dist/theme/theme.svelte.d.ts +11 -0
  141. package/dist/theme/theme.svelte.js +48 -0
  142. package/package.json +56 -4
@@ -0,0 +1,46 @@
1
+ <script>
2
+ // Collapsible — a chevron + trigger row that shows/hides child content.
3
+ // Batteries-included version of Chevron: manages its own open state.
4
+ //
5
+ // <Collapsible title="Details">
6
+ // …content…
7
+ // </Collapsible>
8
+ let {
9
+ open = $bindable(false),
10
+ title = undefined, // simple text trigger
11
+ disabled = false,
12
+ trigger, // optional snippet(open) for custom trigger content
13
+ children,
14
+ ...restProps
15
+ } = $props();
16
+
17
+ function toggle() {
18
+ if (disabled) return;
19
+ open = !open;
20
+ }
21
+ </script>
22
+
23
+ <div class="collapsible" {...restProps}>
24
+ <button
25
+ type="button"
26
+ class="collapsible-trigger"
27
+ {disabled}
28
+ aria-expanded={open}
29
+ onclick={toggle}
30
+ >
31
+ <span class="chevron collapsible-chevron" class:expanded={open} aria-hidden="true">
32
+ <span class="material-symbols-outlined">chevron_right</span>
33
+ </span>
34
+ {#if trigger}
35
+ {@render trigger(open)}
36
+ {:else}
37
+ <span class="collapsible-title">{title}</span>
38
+ {/if}
39
+ </button>
40
+
41
+ {#if open}
42
+ <div class="collapsible-content">
43
+ {@render children?.()}
44
+ </div>
45
+ {/if}
46
+ </div>
@@ -0,0 +1,19 @@
1
+ export default Collapsible;
2
+ type Collapsible = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ declare const Collapsible: import("svelte").Component<{
7
+ open?: boolean;
8
+ title?: any;
9
+ disabled?: boolean;
10
+ trigger: any;
11
+ children: any;
12
+ } & Record<string, any>, {}, "open">;
13
+ type $$ComponentProps = {
14
+ open?: boolean;
15
+ title?: any;
16
+ disabled?: boolean;
17
+ trigger: any;
18
+ children: any;
19
+ } & Record<string, any>;
@@ -0,0 +1,70 @@
1
+ <script>
2
+ let {
3
+ open = $bindable(false),
4
+ variant = 'danger',
5
+ title = 'Are you sure?',
6
+ message = '',
7
+ confirmLabel = 'Confirm',
8
+ cancelLabel = 'Cancel',
9
+ onconfirm = () => {},
10
+ oncancel = () => {},
11
+ children,
12
+ } = $props();
13
+
14
+ const icons = { danger: 'delete', warning: 'warning', info: 'info' };
15
+
16
+ let closing = $state(false);
17
+
18
+ function close() {
19
+ closing = true;
20
+ setTimeout(() => { closing = false; open = false; }, 200);
21
+ }
22
+
23
+ function confirm() {
24
+ onconfirm();
25
+ close();
26
+ }
27
+
28
+ function cancel() {
29
+ oncancel();
30
+ close();
31
+ }
32
+
33
+ let backdropClass = $derived(
34
+ ['modal-backdrop', closing ? 'closing' : ''].filter(Boolean).join(' ')
35
+ );
36
+
37
+ let confirmClass = $derived(
38
+ ['btn',
39
+ variant === 'danger' ? 'btn-danger' : '',
40
+ variant === 'warning' ? 'btn-primary' : '',
41
+ variant === 'info' ? 'btn-primary' : '',
42
+ ].filter(Boolean).join(' ')
43
+ );
44
+ </script>
45
+
46
+ {#if open || closing}
47
+ <!-- svelte-ignore a11y_click_events_have_key_events a11y_no_static_element_interactions -->
48
+ <div class={backdropClass} onclick={cancel} role="dialog" aria-modal="true">
49
+ <!-- svelte-ignore a11y_click_events_have_key_events a11y_no_static_element_interactions -->
50
+ <div class="modal modal-sm modal-confirm" onclick={(e) => e.stopPropagation()}>
51
+
52
+ <div class="modal-body">
53
+ <div class="modal-confirm-icon modal-confirm-icon-{variant}">
54
+ <span class="material-symbols-outlined">{icons[variant]}</span>
55
+ </div>
56
+ <div>
57
+ <p class="modal-confirm-title">{title}</p>
58
+ {#if message}<p class="modal-confirm-message">{message}</p>{/if}
59
+ {@render children?.()}
60
+ </div>
61
+ </div>
62
+
63
+ <div class="modal-footer modal-footer-split">
64
+ <button class="btn btn-secondary" onclick={cancel}>{cancelLabel}</button>
65
+ <button class={confirmClass} onclick={confirm}>{confirmLabel}</button>
66
+ </div>
67
+
68
+ </div>
69
+ </div>
70
+ {/if}
@@ -0,0 +1,27 @@
1
+ export default ConfirmDialog;
2
+ type ConfirmDialog = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ declare const ConfirmDialog: import("svelte").Component<{
7
+ open?: boolean;
8
+ variant?: string;
9
+ title?: string;
10
+ message?: string;
11
+ confirmLabel?: string;
12
+ cancelLabel?: string;
13
+ onconfirm?: Function;
14
+ oncancel?: Function;
15
+ children: any;
16
+ }, {}, "open">;
17
+ type $$ComponentProps = {
18
+ open?: boolean;
19
+ variant?: string;
20
+ title?: string;
21
+ message?: string;
22
+ confirmLabel?: string;
23
+ cancelLabel?: string;
24
+ onconfirm?: Function;
25
+ oncancel?: Function;
26
+ children: any;
27
+ };
@@ -0,0 +1,60 @@
1
+ <script>
2
+ import Calendar from './Calendar.svelte';
3
+
4
+ // DatePicker — a field that opens a Calendar popover to pick a date.
5
+ // Simple: no keyboard nav, no min/max, no time.
6
+ let {
7
+ value = $bindable(null), // JS Date or null
8
+ placeholder = 'Select a date',
9
+ disabled = false,
10
+ format = defaultFormat, // (date) => string
11
+ ...restProps
12
+ } = $props();
13
+
14
+ let open = $state(false);
15
+ let root;
16
+
17
+ function defaultFormat(d) {
18
+ if (!d) return '';
19
+ return d.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: 'numeric' });
20
+ }
21
+
22
+ let display = $derived(value ? format(value) : '');
23
+
24
+ function toggle() { if (!disabled) open = !open; }
25
+ function onSelect() { open = false; }
26
+
27
+ $effect(() => {
28
+ if (!open) return;
29
+ function onDoc(e) { if (root && !root.contains(e.target)) open = false; }
30
+ function onKey(e) { if (e.key === 'Escape') open = false; }
31
+ document.addEventListener('pointerdown', onDoc);
32
+ document.addEventListener('keydown', onKey);
33
+ return () => {
34
+ document.removeEventListener('pointerdown', onDoc);
35
+ document.removeEventListener('keydown', onKey);
36
+ };
37
+ });
38
+ </script>
39
+
40
+ <div class="datepicker" bind:this={root}>
41
+ <button
42
+ type="button"
43
+ class="input datepicker-trigger"
44
+ class:datepicker-placeholder={!value}
45
+ {disabled}
46
+ onclick={toggle}
47
+ aria-haspopup="dialog"
48
+ aria-expanded={open}
49
+ {...restProps}
50
+ >
51
+ <span class="material-symbols-outlined datepicker-icon">calendar_today</span>
52
+ <span class="datepicker-value">{display || placeholder}</span>
53
+ </button>
54
+
55
+ {#if open}
56
+ <div class="datepicker-popover">
57
+ <Calendar bind:value onselect={onSelect} />
58
+ </div>
59
+ {/if}
60
+ </div>
@@ -0,0 +1,17 @@
1
+ export default DatePicker;
2
+ type DatePicker = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ declare const DatePicker: import("svelte").Component<{
7
+ value?: any;
8
+ placeholder?: string;
9
+ disabled?: boolean;
10
+ format?: (d: any) => any;
11
+ } & Record<string, any>, {}, "value">;
12
+ type $$ComponentProps = {
13
+ value?: any;
14
+ placeholder?: string;
15
+ disabled?: boolean;
16
+ format?: (d: any) => any;
17
+ } & Record<string, any>;
@@ -0,0 +1,25 @@
1
+ <script>
2
+ // Divider — a horizontal or vertical separator, optionally with a
3
+ // centered label. Uses the existing divider tokens.
4
+ let {
5
+ vertical = false,
6
+ strong = false,
7
+ label = undefined,
8
+ children,
9
+ ...restProps
10
+ } = $props();
11
+
12
+ const hasLabel = $derived(!!(label || children));
13
+ </script>
14
+
15
+ {#if vertical}
16
+ <span class="divider-vertical" class:divider-strong={strong} role="separator" aria-orientation="vertical" {...restProps}></span>
17
+ {:else if hasLabel}
18
+ <div class="divider-labeled" role="separator" {...restProps}>
19
+ <span class="divider-line" class:divider-strong={strong}></span>
20
+ <span class="divider-text">{#if label}{label}{:else}{@render children?.()}{/if}</span>
21
+ <span class="divider-line" class:divider-strong={strong}></span>
22
+ </div>
23
+ {:else}
24
+ <hr class="divider" class:divider-strong={strong} {...restProps} />
25
+ {/if}
@@ -0,0 +1,17 @@
1
+ export default Divider;
2
+ type Divider = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ declare const Divider: import("svelte").Component<{
7
+ vertical?: boolean;
8
+ strong?: boolean;
9
+ label?: any;
10
+ children: any;
11
+ } & Record<string, any>, {}, "">;
12
+ type $$ComponentProps = {
13
+ vertical?: boolean;
14
+ strong?: boolean;
15
+ label?: any;
16
+ children: any;
17
+ } & Record<string, any>;
@@ -0,0 +1,100 @@
1
+ <script>
2
+ // Dropdown — a menu of actions triggered by a button/element.
3
+ // Distinct from Select (which is a form field). Use for row actions,
4
+ // overflow "⋯" menus, etc.
5
+ //
6
+ // items: [{ label, icon?, onclick?, href?, danger?, disabled?, divider? }]
7
+ // Or use the `trigger` and `menu` snippets for full control.
8
+
9
+ let {
10
+ items = [],
11
+ align = 'start', // 'start' | 'end'
12
+ label = 'Options',
13
+ disabled = false,
14
+ trigger, // optional snippet(open) for a custom trigger
15
+ menu, // optional snippet(close) for custom menu content
16
+ ...restProps
17
+ } = $props();
18
+
19
+ let open = $state(false);
20
+ let root;
21
+
22
+ function toggle() { if (!disabled) open = !open; }
23
+ function close() { open = false; }
24
+
25
+ function runItem(item) {
26
+ if (item.disabled) return;
27
+ close();
28
+ item.onclick?.();
29
+ }
30
+
31
+ $effect(() => {
32
+ if (!open) return;
33
+ function onDoc(e) { if (root && !root.contains(e.target)) close(); }
34
+ function onKey(e) { if (e.key === 'Escape') close(); }
35
+ document.addEventListener('pointerdown', onDoc);
36
+ document.addEventListener('keydown', onKey);
37
+ return () => {
38
+ document.removeEventListener('pointerdown', onDoc);
39
+ document.removeEventListener('keydown', onKey);
40
+ };
41
+ });
42
+ </script>
43
+
44
+ <div class="dropdown" bind:this={root}>
45
+ {#if trigger}
46
+ <div class="dropdown-trigger-wrap" onclick={toggle} role="button" tabindex="0">
47
+ {@render trigger(open)}
48
+ </div>
49
+ {:else}
50
+ <button
51
+ type="button"
52
+ class="btn btn-secondary dropdown-trigger"
53
+ aria-haspopup="menu"
54
+ aria-expanded={open}
55
+ {disabled}
56
+ onclick={toggle}
57
+ {...restProps}
58
+ >
59
+ {label}
60
+ <span class="material-symbols-outlined dropdown-caret" class:open>expand_more</span>
61
+ </button>
62
+ {/if}
63
+
64
+ {#if open}
65
+ <div class="dropdown-menu" class:dropdown-menu-end={align === 'end'} role="menu">
66
+ {#if menu}
67
+ {@render menu(close)}
68
+ {:else}
69
+ {#each items as item}
70
+ {#if item.divider}
71
+ <div class="dropdown-divider"></div>
72
+ {:else if item.href}
73
+ <a
74
+ class="dropdown-item"
75
+ class:dropdown-item-danger={item.danger}
76
+ href={item.href}
77
+ role="menuitem"
78
+ onclick={close}
79
+ >
80
+ {#if item.icon}<span class="material-symbols-outlined">{item.icon}</span>{/if}
81
+ <span class="dropdown-item-label">{item.label}</span>
82
+ </a>
83
+ {:else}
84
+ <button
85
+ type="button"
86
+ class="dropdown-item"
87
+ class:dropdown-item-danger={item.danger}
88
+ disabled={item.disabled}
89
+ role="menuitem"
90
+ onclick={() => runItem(item)}
91
+ >
92
+ {#if item.icon}<span class="material-symbols-outlined">{item.icon}</span>{/if}
93
+ <span class="dropdown-item-label">{item.label}</span>
94
+ </button>
95
+ {/if}
96
+ {/each}
97
+ {/if}
98
+ </div>
99
+ {/if}
100
+ </div>
@@ -0,0 +1,21 @@
1
+ export default Dropdown;
2
+ type Dropdown = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ declare const Dropdown: import("svelte").Component<{
7
+ items?: any[];
8
+ align?: string;
9
+ label?: string;
10
+ disabled?: boolean;
11
+ trigger: any;
12
+ menu: any;
13
+ } & Record<string, any>, {}, "">;
14
+ type $$ComponentProps = {
15
+ items?: any[];
16
+ align?: string;
17
+ label?: string;
18
+ disabled?: boolean;
19
+ trigger: any;
20
+ menu: any;
21
+ } & Record<string, any>;
@@ -0,0 +1,37 @@
1
+ <script>
2
+ let {
3
+ checked = $bindable(false),
4
+ indeterminate = false,
5
+ label = undefined,
6
+ disabled = false,
7
+ children,
8
+ ...restProps
9
+ } = $props();
10
+
11
+ let inputEl = $state();
12
+
13
+ // Reflect the indeterminate prop onto the DOM node (not an HTML attribute).
14
+ $effect(() => {
15
+ if (inputEl) inputEl.indeterminate = indeterminate;
16
+ });
17
+ </script>
18
+
19
+ <label class="checkbox" class:checkbox-disabled={disabled}>
20
+ <input
21
+ bind:this={inputEl}
22
+ type="checkbox"
23
+ bind:checked
24
+ {disabled}
25
+ {...restProps}
26
+ />
27
+ <span class="checkbox-box">
28
+ <span class="material-symbols-outlined checkbox-icon">
29
+ {indeterminate ? 'remove' : 'check'}
30
+ </span>
31
+ </span>
32
+ {#if label}
33
+ <span class="checkbox-label">{label}</span>
34
+ {:else if children}
35
+ <span class="checkbox-label">{@render children()}</span>
36
+ {/if}
37
+ </label>
@@ -0,0 +1,19 @@
1
+ export default Checkbox;
2
+ type Checkbox = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ declare const Checkbox: import("svelte").Component<{
7
+ checked?: boolean;
8
+ indeterminate?: boolean;
9
+ label?: any;
10
+ disabled?: boolean;
11
+ children: any;
12
+ } & Record<string, any>, {}, "checked">;
13
+ type $$ComponentProps = {
14
+ checked?: boolean;
15
+ indeterminate?: boolean;
16
+ label?: any;
17
+ disabled?: boolean;
18
+ children: any;
19
+ } & Record<string, any>;
@@ -0,0 +1,28 @@
1
+ <script>
2
+ let {
3
+ label = undefined,
4
+ required = false,
5
+ optional = false,
6
+ hint = undefined,
7
+ error = undefined,
8
+ children,
9
+ ...restProps
10
+ } = $props();
11
+ </script>
12
+
13
+ <div class="field" {...restProps}>
14
+ {#if label}
15
+ <label class="label" class:label-required={required} class:label-optional={optional}>
16
+ {label}
17
+ </label>
18
+ {/if}
19
+ {@render children?.()}
20
+ {#if error}
21
+ <span class="field-error">
22
+ <span class="material-symbols-outlined" style="font-size:0.9rem">error</span>
23
+ {error}
24
+ </span>
25
+ {:else if hint}
26
+ <span class="field-hint">{hint}</span>
27
+ {/if}
28
+ </div>
@@ -0,0 +1,21 @@
1
+ export default Field;
2
+ type Field = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ declare const Field: import("svelte").Component<{
7
+ label?: any;
8
+ required?: boolean;
9
+ optional?: boolean;
10
+ hint?: any;
11
+ error?: any;
12
+ children: any;
13
+ } & Record<string, any>, {}, "">;
14
+ type $$ComponentProps = {
15
+ label?: any;
16
+ required?: boolean;
17
+ optional?: boolean;
18
+ hint?: any;
19
+ error?: any;
20
+ children: any;
21
+ } & Record<string, any>;
@@ -0,0 +1,56 @@
1
+ <script>
2
+ let {
3
+ value = $bindable(''),
4
+ type = 'text',
5
+ placeholder = '',
6
+ disabled = false,
7
+ readonly = false,
8
+ error = false,
9
+ success = false,
10
+ iconLeft = undefined,
11
+ iconRight = undefined,
12
+ size = 'md',
13
+ ...restProps
14
+ } = $props();
15
+
16
+ const sizeClass = { sm: 'input-sm', md: '', lg: 'input-lg' };
17
+
18
+ let inputClass = $derived([
19
+ 'input',
20
+ sizeClass[size],
21
+ error ? 'input-error' : '',
22
+ success ? 'input-success' : '',
23
+ iconLeft ? 'input-has-icon-left' : '',
24
+ iconRight ? 'input-has-icon-right' : '',
25
+ ].filter(Boolean).join(' '));
26
+ </script>
27
+
28
+ {#if iconLeft || iconRight}
29
+ <div class="input-wrapper">
30
+ {#if iconLeft}
31
+ <span class="material-symbols-outlined input-icon-left">{iconLeft}</span>
32
+ {/if}
33
+ <input
34
+ class={inputClass}
35
+ {type}
36
+ {placeholder}
37
+ {disabled}
38
+ {readonly}
39
+ bind:value
40
+ {...restProps}
41
+ />
42
+ {#if iconRight}
43
+ <span class="material-symbols-outlined input-icon-right">{iconRight}</span>
44
+ {/if}
45
+ </div>
46
+ {:else}
47
+ <input
48
+ class={inputClass}
49
+ {type}
50
+ {placeholder}
51
+ {disabled}
52
+ {readonly}
53
+ bind:value
54
+ {...restProps}
55
+ />
56
+ {/if}
@@ -0,0 +1,29 @@
1
+ export default Input;
2
+ type Input = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ declare const Input: import("svelte").Component<{
7
+ value?: string;
8
+ type?: string;
9
+ placeholder?: string;
10
+ disabled?: boolean;
11
+ readonly?: boolean;
12
+ error?: boolean;
13
+ success?: boolean;
14
+ iconLeft?: any;
15
+ iconRight?: any;
16
+ size?: string;
17
+ } & Record<string, any>, {}, "value">;
18
+ type $$ComponentProps = {
19
+ value?: string;
20
+ type?: string;
21
+ placeholder?: string;
22
+ disabled?: boolean;
23
+ readonly?: boolean;
24
+ error?: boolean;
25
+ success?: boolean;
26
+ iconLeft?: any;
27
+ iconRight?: any;
28
+ size?: string;
29
+ } & Record<string, any>;