@invopop/popui 0.0.108 → 0.1.2

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 (248) hide show
  1. package/dist/AlertDialog.svelte +84 -59
  2. package/dist/AlertDialog.svelte.d.ts +5 -29
  3. package/dist/BaseButton.svelte +106 -101
  4. package/dist/BaseButton.svelte.d.ts +4 -34
  5. package/dist/BaseCard.svelte +20 -12
  6. package/dist/BaseCard.svelte.d.ts +4 -26
  7. package/dist/BaseCounter.svelte +13 -9
  8. package/dist/BaseCounter.svelte.d.ts +4 -17
  9. package/dist/BaseDropdown.svelte +54 -38
  10. package/dist/BaseDropdown.svelte.d.ts +6 -26
  11. package/dist/BaseFlag.svelte +6 -4
  12. package/dist/BaseFlag.svelte.d.ts +4 -17
  13. package/dist/BaseTable.svelte +226 -188
  14. package/dist/BaseTable.svelte.d.ts +4 -39
  15. package/dist/BaseTableActions.svelte +43 -33
  16. package/dist/BaseTableActions.svelte.d.ts +6 -21
  17. package/dist/BaseTableCellContent.svelte +19 -13
  18. package/dist/BaseTableCellContent.svelte.d.ts +4 -24
  19. package/dist/BaseTableCheckbox.svelte +19 -12
  20. package/dist/BaseTableCheckbox.svelte.d.ts +4 -21
  21. package/dist/BaseTableHeaderContent.svelte +30 -22
  22. package/dist/BaseTableHeaderContent.svelte.d.ts +4 -21
  23. package/dist/BaseTableHeaderOrderBy.svelte +24 -0
  24. package/dist/BaseTableHeaderOrderBy.svelte.d.ts +4 -0
  25. package/dist/BaseTableRow.svelte +78 -60
  26. package/dist/BaseTableRow.svelte.d.ts +4 -32
  27. package/dist/Breadcrumbs.svelte +14 -10
  28. package/dist/Breadcrumbs.svelte.d.ts +4 -19
  29. package/dist/ButtonFile.svelte +40 -29
  30. package/dist/ButtonFile.svelte.d.ts +4 -25
  31. package/dist/ButtonUuidCopy.svelte +27 -20
  32. package/dist/ButtonUuidCopy.svelte.d.ts +4 -22
  33. package/dist/CardCheckbox.svelte +28 -19
  34. package/dist/CardCheckbox.svelte.d.ts +4 -28
  35. package/dist/CardRelation.svelte +9 -8
  36. package/dist/CardRelation.svelte.d.ts +4 -22
  37. package/dist/CompanySelector.svelte +49 -43
  38. package/dist/CompanySelector.svelte.d.ts +4 -22
  39. package/dist/CounterWorkflow.svelte +12 -8
  40. package/dist/CounterWorkflow.svelte.d.ts +4 -17
  41. package/dist/DataListItem.svelte +24 -14
  42. package/dist/DataListItem.svelte.d.ts +4 -22
  43. package/dist/DatePicker.svelte +186 -386
  44. package/dist/DatePicker.svelte.d.ts +4 -22
  45. package/dist/DrawerContext.svelte +33 -22
  46. package/dist/DrawerContext.svelte.d.ts +4 -24
  47. package/dist/DrawerContextItem.svelte +69 -56
  48. package/dist/DrawerContextItem.svelte.d.ts +4 -23
  49. package/dist/DrawerContextSeparator.svelte +1 -1
  50. package/dist/DrawerContextSeparator.svelte.d.ts +22 -19
  51. package/dist/DrawerContextWorkspace.svelte +31 -32
  52. package/dist/DrawerContextWorkspace.svelte.d.ts +4 -20
  53. package/dist/DropdownSelect.svelte +93 -81
  54. package/dist/DropdownSelect.svelte.d.ts +4 -27
  55. package/dist/EmptyStateIcon.svelte +13 -7
  56. package/dist/EmptyStateIcon.svelte.d.ts +4 -22
  57. package/dist/EmptyStateIllustration.svelte +41 -33
  58. package/dist/EmptyStateIllustration.svelte.d.ts +4 -21
  59. package/dist/FeedEvents.svelte +5 -2
  60. package/dist/FeedEvents.svelte.d.ts +4 -17
  61. package/dist/FeedIconEvent.svelte +5 -3
  62. package/dist/FeedIconEvent.svelte.d.ts +4 -19
  63. package/dist/FeedIconStatus.svelte +23 -18
  64. package/dist/FeedIconStatus.svelte.d.ts +4 -17
  65. package/dist/FeedItem.svelte +33 -28
  66. package/dist/FeedItem.svelte.d.ts +4 -30
  67. package/dist/FeedItemDetail.svelte +21 -13
  68. package/dist/FeedItemDetail.svelte.d.ts +4 -23
  69. package/dist/FeedViewer.svelte +6 -13
  70. package/dist/FeedViewer.svelte.d.ts +4 -21
  71. package/dist/FormLayoutModal.svelte +9 -3
  72. package/dist/FormLayoutModal.svelte.d.ts +4 -29
  73. package/dist/GlobalSearch.svelte +38 -31
  74. package/dist/GlobalSearch.svelte.d.ts +4 -18
  75. package/dist/InputCheckbox.svelte +23 -14
  76. package/dist/InputCheckbox.svelte.d.ts +4 -23
  77. package/dist/InputError.svelte +4 -1
  78. package/dist/InputError.svelte.d.ts +4 -16
  79. package/dist/InputLabel.svelte +5 -3
  80. package/dist/InputLabel.svelte.d.ts +4 -18
  81. package/dist/InputRadio.svelte +25 -19
  82. package/dist/InputRadio.svelte.d.ts +4 -21
  83. package/dist/InputSearch.svelte +66 -46
  84. package/dist/InputSearch.svelte.d.ts +9 -32
  85. package/dist/InputSelect.svelte +36 -33
  86. package/dist/InputSelect.svelte.d.ts +4 -31
  87. package/dist/InputText.svelte +64 -48
  88. package/dist/InputText.svelte.d.ts +4 -28
  89. package/dist/InputTextarea.svelte +38 -29
  90. package/dist/InputTextarea.svelte.d.ts +4 -25
  91. package/dist/InputToggle.svelte +29 -22
  92. package/dist/InputToggle.svelte.d.ts +4 -20
  93. package/dist/MenuItem.svelte +99 -87
  94. package/dist/MenuItem.svelte.d.ts +5 -29
  95. package/dist/MenuItemCollapsible.svelte +26 -18
  96. package/dist/MenuItemCollapsible.svelte.d.ts +4 -24
  97. package/dist/Notification.svelte +35 -31
  98. package/dist/Notification.svelte.d.ts +4 -20
  99. package/dist/ProfileAvatar.svelte +26 -19
  100. package/dist/ProfileAvatar.svelte.d.ts +4 -21
  101. package/dist/ProfileSelector.svelte +25 -17
  102. package/dist/ProfileSelector.svelte.d.ts +4 -22
  103. package/dist/SectionLayout.svelte +6 -3
  104. package/dist/SectionLayout.svelte.d.ts +4 -18
  105. package/dist/SeparatorHorizontal.svelte +1 -1
  106. package/dist/SeparatorHorizontal.svelte.d.ts +22 -19
  107. package/dist/ShortcutWrapper.svelte +7 -1
  108. package/dist/ShortcutWrapper.svelte.d.ts +4 -27
  109. package/dist/StatusLabel.svelte +16 -12
  110. package/dist/StatusLabel.svelte.d.ts +4 -18
  111. package/dist/StepIconList.svelte +44 -41
  112. package/dist/StepIconList.svelte.d.ts +4 -17
  113. package/dist/TagBeta.svelte.d.ts +22 -19
  114. package/dist/TagSearch.svelte +19 -20
  115. package/dist/TagSearch.svelte.d.ts +4 -22
  116. package/dist/TagStatus.svelte +42 -37
  117. package/dist/TagStatus.svelte.d.ts +4 -19
  118. package/dist/TitleMain.svelte +9 -2
  119. package/dist/TitleMain.svelte.d.ts +4 -18
  120. package/dist/TitleSection.svelte +9 -2
  121. package/dist/TitleSection.svelte.d.ts +4 -18
  122. package/dist/UuidCopy.svelte +61 -48
  123. package/dist/UuidCopy.svelte.d.ts +4 -26
  124. package/dist/alert-dialog/alert-dialog-action.svelte +15 -15
  125. package/dist/alert-dialog/alert-dialog-action.svelte.d.ts +5 -26
  126. package/dist/alert-dialog/alert-dialog-cancel.svelte +13 -10
  127. package/dist/alert-dialog/alert-dialog-cancel.svelte.d.ts +3 -22
  128. package/dist/alert-dialog/alert-dialog-content.svelte +19 -15
  129. package/dist/alert-dialog/alert-dialog-content.svelte.d.ts +6 -15
  130. package/dist/alert-dialog/alert-dialog-description.svelte +11 -6
  131. package/dist/alert-dialog/alert-dialog-description.svelte.d.ts +3 -16
  132. package/dist/alert-dialog/alert-dialog-footer.svelte +11 -5
  133. package/dist/alert-dialog/alert-dialog-footer.svelte.d.ts +4 -16
  134. package/dist/alert-dialog/alert-dialog-header.svelte +14 -5
  135. package/dist/alert-dialog/alert-dialog-header.svelte.d.ts +4 -16
  136. package/dist/alert-dialog/alert-dialog-overlay.svelte +10 -13
  137. package/dist/alert-dialog/alert-dialog-overlay.svelte.d.ts +3 -14
  138. package/dist/alert-dialog/alert-dialog-title.svelte +11 -8
  139. package/dist/alert-dialog/alert-dialog-title.svelte.d.ts +3 -16
  140. package/dist/alert-dialog/alert-dialog-trigger.svelte +6 -0
  141. package/dist/alert-dialog/alert-dialog-trigger.svelte.d.ts +4 -0
  142. package/dist/alert-dialog/index.d.ts +3 -4
  143. package/dist/alert-dialog/index.js +2 -2
  144. package/dist/button/button.svelte +76 -18
  145. package/dist/button/button.svelte.d.ts +62 -14
  146. package/dist/button/index.d.ts +2 -60
  147. package/dist/button/index.js +1 -26
  148. package/dist/helpers.d.ts +4 -1
  149. package/dist/helpers.js +35 -0
  150. package/dist/index.d.ts +1 -3
  151. package/dist/index.js +0 -4
  152. package/dist/range-calendar/index.d.ts +20 -0
  153. package/dist/range-calendar/index.js +22 -0
  154. package/dist/range-calendar/range-calendar-caption.svelte +71 -0
  155. package/dist/range-calendar/range-calendar-caption.svelte.d.ts +19 -0
  156. package/dist/range-calendar/range-calendar-cell.svelte +18 -0
  157. package/dist/range-calendar/range-calendar-cell.svelte.d.ts +4 -0
  158. package/dist/range-calendar/range-calendar-day.svelte +41 -0
  159. package/dist/range-calendar/range-calendar-day.svelte.d.ts +4 -0
  160. package/dist/range-calendar/range-calendar-grid-row.svelte +11 -0
  161. package/dist/range-calendar/range-calendar-grid-row.svelte.d.ts +4 -0
  162. package/dist/range-calendar/range-calendar-grid.svelte +15 -0
  163. package/dist/range-calendar/range-calendar-grid.svelte.d.ts +4 -0
  164. package/dist/range-calendar/range-calendar-head-cell.svelte +18 -0
  165. package/dist/range-calendar/range-calendar-head-cell.svelte.d.ts +4 -0
  166. package/dist/range-calendar/range-calendar-header.svelte +18 -0
  167. package/dist/range-calendar/range-calendar-header.svelte.d.ts +4 -0
  168. package/dist/range-calendar/range-calendar-heading.svelte +15 -0
  169. package/dist/range-calendar/range-calendar-heading.svelte.d.ts +4 -0
  170. package/dist/range-calendar/range-calendar-month-select.svelte +44 -0
  171. package/dist/range-calendar/range-calendar-month-select.svelte.d.ts +4 -0
  172. package/dist/range-calendar/range-calendar-month.svelte +14 -0
  173. package/dist/range-calendar/range-calendar-month.svelte.d.ts +5 -0
  174. package/dist/range-calendar/range-calendar-months.svelte +18 -0
  175. package/dist/range-calendar/range-calendar-months.svelte.d.ts +5 -0
  176. package/dist/range-calendar/range-calendar-nav.svelte +18 -0
  177. package/dist/range-calendar/range-calendar-nav.svelte.d.ts +5 -0
  178. package/dist/range-calendar/range-calendar-next-button.svelte +30 -0
  179. package/dist/range-calendar/range-calendar-next-button.svelte.d.ts +8 -0
  180. package/dist/range-calendar/range-calendar-prev-button.svelte +30 -0
  181. package/dist/range-calendar/range-calendar-prev-button.svelte.d.ts +8 -0
  182. package/dist/range-calendar/range-calendar-year-select.svelte +43 -0
  183. package/dist/range-calendar/range-calendar-year-select.svelte.d.ts +4 -0
  184. package/dist/range-calendar/range-calendar.svelte +109 -0
  185. package/dist/range-calendar/range-calendar.svelte.d.ts +21 -0
  186. package/dist/svg/BgPattern.svelte.d.ts +22 -19
  187. package/dist/svg/IconContact.svelte +6 -1
  188. package/dist/svg/IconContact.svelte.d.ts +5 -15
  189. package/dist/svg/IconEmpty.svelte.d.ts +22 -19
  190. package/dist/svg/IconFile.svelte +6 -1
  191. package/dist/svg/IconFile.svelte.d.ts +5 -15
  192. package/dist/svg/IconInvoice.svelte +6 -1
  193. package/dist/svg/IconInvoice.svelte.d.ts +5 -15
  194. package/dist/svg/IconNoResults.svelte +6 -1
  195. package/dist/svg/IconNoResults.svelte.d.ts +5 -15
  196. package/dist/svg/IconPdf.svelte +6 -1
  197. package/dist/svg/IconPdf.svelte.d.ts +5 -15
  198. package/dist/svg/IconProduct.svelte +6 -1
  199. package/dist/svg/IconProduct.svelte.d.ts +5 -15
  200. package/dist/table/table-body.svelte +10 -5
  201. package/dist/table/table-body.svelte.d.ts +4 -16
  202. package/dist/table/table-caption.svelte +14 -5
  203. package/dist/table/table-caption.svelte.d.ts +4 -16
  204. package/dist/table/table-cell.svelte +16 -7
  205. package/dist/table/table-cell.svelte.d.ts +4 -19
  206. package/dist/table/table-footer.svelte +14 -5
  207. package/dist/table/table-footer.svelte.d.ts +4 -16
  208. package/dist/table/table-head.svelte +11 -5
  209. package/dist/table/table-head.svelte.d.ts +4 -16
  210. package/dist/table/table-header.svelte +17 -8
  211. package/dist/table/table-header.svelte.d.ts +4 -19
  212. package/dist/table/table-row.svelte +22 -8
  213. package/dist/table/table-row.svelte.d.ts +4 -22
  214. package/dist/table/table.svelte +11 -6
  215. package/dist/table/table.svelte.d.ts +4 -16
  216. package/dist/tabs/tabs-content.svelte +13 -8
  217. package/dist/tabs/tabs-content.svelte.d.ts +3 -16
  218. package/dist/tabs/tabs-list.svelte +7 -6
  219. package/dist/tabs/tabs-list.svelte.d.ts +3 -16
  220. package/dist/tabs/tabs-trigger.svelte +13 -9
  221. package/dist/tabs/tabs-trigger.svelte.d.ts +3 -14
  222. package/dist/tabs/tabs.svelte +12 -7
  223. package/dist/tabs/tabs.svelte.d.ts +3 -16
  224. package/dist/tooltip/index.d.ts +5 -3
  225. package/dist/tooltip/index.js +5 -3
  226. package/dist/tooltip/tooltip-content.svelte +42 -23
  227. package/dist/tooltip/tooltip-content.svelte.d.ts +5 -15
  228. package/dist/tooltip/tooltip-trigger.svelte +8 -0
  229. package/dist/tooltip/tooltip-trigger.svelte.d.ts +4 -0
  230. package/dist/tw.theme.d.ts +2 -9
  231. package/dist/tw.theme.js +0 -5
  232. package/dist/types.d.ts +484 -25
  233. package/dist/utils.d.ts +10 -1
  234. package/package.json +32 -41
  235. package/README.md +0 -234
  236. package/dist/BaseTableHeaderSortBy.svelte +0 -22
  237. package/dist/BaseTableHeaderSortBy.svelte.d.ts +0 -20
  238. package/dist/ComboBox.svelte +0 -12
  239. package/dist/ComboBox.svelte.d.ts +0 -21
  240. package/dist/ComboBoxContent.svelte +0 -33
  241. package/dist/ComboBoxContent.svelte.d.ts +0 -20
  242. package/dist/ProgressBar.svelte +0 -6
  243. package/dist/ProgressBar.svelte.d.ts +0 -16
  244. package/dist/alert-dialog/alert-dialog-portal.svelte +0 -6
  245. package/dist/alert-dialog/alert-dialog-portal.svelte.d.ts +0 -17
  246. package/dist/popui.css +0 -1
  247. package/dist/wcdispatch.d.ts +0 -1
  248. package/dist/wcdispatch.js +0 -9
@@ -1,46 +1,62 @@
1
- <script>import clsx from "clsx";
2
- import { createEventDispatcher, onMount } from "svelte";
3
- import InputLabel from "./InputLabel.svelte";
4
- import { dispatchWcEvent } from "./wcdispatch.js";
5
- import InputError from "./InputError.svelte";
6
- export let id = Math.random().toString(36).slice(2, 7);
7
- export let label = "";
8
- export let placeholder = "";
9
- export let errorText = "";
10
- export let disabled = false;
11
- export let value = "";
12
- export let focusOnLoad = false;
13
- let inputEl;
14
- let timer;
15
- const dispatch = createEventDispatcher();
16
- const debounce = (target) => {
17
- clearTimeout(timer);
18
- timer = setTimeout(() => {
19
- dispatch("input", target.value);
20
- dispatchWcEvent(target, "input", target.value);
21
- }, 750);
22
- };
23
- $:
24
- inputStyles = clsx(
25
- { "pointer-events-none bg-neutral-50": disabled },
26
- {
27
- "text-danger-500 border-danger-400 outline-danger-400": errorText
28
- },
29
- {
30
- "border-neutral-200 hover:border-neutral-300 text-neutral-800 outline-none caret-workspace-accent focus:border-workspace-accent focus:shadow-active": !errorText
31
- }
32
- );
33
- function handleInput(event) {
34
- if (event instanceof CustomEvent)
35
- return;
36
- const target = event.target;
37
- debounce(target);
38
- }
39
- onMount(() => {
40
- if (!focusOnLoad)
41
- return;
42
- inputEl.focus();
43
- });
1
+ <script lang="ts">
2
+ import clsx from 'clsx'
3
+ import { onMount } from 'svelte'
4
+ import InputLabel from './InputLabel.svelte'
5
+ import InputError from './InputError.svelte'
6
+ import type { InputTextProps } from './types'
7
+
8
+ let {
9
+ id = Math.random().toString(36).slice(2, 7),
10
+ label = '',
11
+ placeholder = '',
12
+ errorText = '',
13
+ disabled = false,
14
+ value = $bindable(''),
15
+ focusOnLoad = false,
16
+ oninput,
17
+ onkeydown,
18
+ onfocus,
19
+ onblur,
20
+ ...rest
21
+ }: InputTextProps = $props()
22
+
23
+ let inputEl: HTMLInputElement | undefined = $state()
24
+ let timer: ReturnType<typeof setTimeout>
25
+
26
+ const debounce = (target: HTMLInputElement) => {
27
+ clearTimeout(timer)
28
+ timer = setTimeout(() => {
29
+ oninput?.(target.value)
30
+ }, 750)
31
+ }
32
+
33
+ let inputStyles = $derived(
34
+ clsx(
35
+ { 'pointer-events-none bg-neutral-50': disabled },
36
+ {
37
+ 'text-danger-500 border-danger-400 outline-danger-400': errorText
38
+ },
39
+ {
40
+ 'border-neutral-200 hover:border-neutral-300 text-neutral-800 outline-none caret-workspace-accent focus:border-workspace-accent focus:shadow-active':
41
+ !errorText
42
+ }
43
+ )
44
+ )
45
+
46
+ function handleInput(event: unknown) {
47
+ // If event is not a native event we skip the dispatch to avoid infinite loop
48
+ if (event instanceof CustomEvent) return
49
+
50
+ const target = (event as PointerEvent).target as HTMLInputElement
51
+
52
+ debounce(target)
53
+ }
54
+
55
+ onMount(() => {
56
+ if (!focusOnLoad) return
57
+
58
+ inputEl?.focus()
59
+ })
44
60
  </script>
45
61
 
46
62
  {#if label}
@@ -54,11 +70,11 @@ onMount(() => {
54
70
  class="{inputStyles} py-1.5 px-2.5 border w-full rounded-md placeholder:text-neutral-500 text-base tracking-tight"
55
71
  {placeholder}
56
72
  readonly={disabled}
57
- {...$$restProps}
58
- on:input={handleInput}
59
- on:focus
60
- on:blur
61
- on:keydown
73
+ {...rest}
74
+ oninput={handleInput}
75
+ {onfocus}
76
+ {onblur}
77
+ {onkeydown}
62
78
  />
63
79
  {#if errorText}
64
80
  <InputError {errorText} />
@@ -1,28 +1,4 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- [x: string]: any;
5
- id?: string | undefined;
6
- label?: string | undefined;
7
- placeholder?: string | undefined;
8
- errorText?: string | undefined;
9
- disabled?: boolean | undefined;
10
- value?: string | number | undefined;
11
- focusOnLoad?: boolean | undefined;
12
- };
13
- events: {
14
- focus: FocusEvent;
15
- blur: FocusEvent;
16
- keydown: KeyboardEvent;
17
- input: CustomEvent<any>;
18
- } & {
19
- [evt: string]: CustomEvent<any>;
20
- };
21
- slots: {};
22
- };
23
- export type InputTextProps = typeof __propDef.props;
24
- export type InputTextEvents = typeof __propDef.events;
25
- export type InputTextSlots = typeof __propDef.slots;
26
- export default class InputText extends SvelteComponent<InputTextProps, InputTextEvents, InputTextSlots> {
27
- }
28
- export {};
1
+ import type { InputTextProps } from './types';
2
+ declare const InputText: import("svelte").Component<InputTextProps, {}, "value">;
3
+ type InputText = ReturnType<typeof InputText>;
4
+ export default InputText;
@@ -1,29 +1,38 @@
1
- <script>import { createEventDispatcher } from "svelte";
2
- import InputLabel from "./InputLabel.svelte";
3
- import InputError from "./InputError.svelte";
4
- import clsx from "clsx";
5
- const dispatch = createEventDispatcher();
6
- export let id = Math.random().toString(36).slice(2, 7);
7
- export let label = "";
8
- export let placeholder = "";
9
- export let errorText = "";
10
- export let disabled = false;
11
- export let value = "";
12
- export let rows = 4;
13
- $:
14
- inputStyles = clsx(
15
- { "pointer-events-none bg-neutral-50": disabled },
16
- {
17
- "text-danger-500 border-danger-400 outline-danger-400": errorText
18
- },
19
- {
20
- "border-neutral-200 hover:border-neutral-300 text-neutral-800 outline-none caret-workspace-accent focus:border-workspace-accent focus:shadow-active": !errorText
21
- }
22
- );
23
- function handleInput(event) {
24
- value = event.target.value;
25
- dispatch("input", value);
26
- }
1
+ <script lang="ts">
2
+ import InputLabel from './InputLabel.svelte'
3
+ import InputError from './InputError.svelte'
4
+ import clsx from 'clsx'
5
+ import type { InputTextareaProps } from './types'
6
+
7
+ let {
8
+ id = Math.random().toString(36).slice(2, 7),
9
+ label = '',
10
+ placeholder = '',
11
+ errorText = '',
12
+ disabled = false,
13
+ value = $bindable(''),
14
+ rows = 4,
15
+ oninput,
16
+ ...rest
17
+ }: InputTextareaProps = $props()
18
+
19
+ let inputStyles = $derived(
20
+ clsx(
21
+ { 'pointer-events-none bg-neutral-50': disabled },
22
+ {
23
+ 'text-danger-500 border-danger-400 outline-danger-400': errorText
24
+ },
25
+ {
26
+ 'border-neutral-200 hover:border-neutral-300 text-neutral-800 outline-none caret-workspace-accent focus:border-workspace-accent focus:shadow-active':
27
+ !errorText
28
+ }
29
+ )
30
+ )
31
+
32
+ function handleInput(event: Event) {
33
+ value = (event.target as HTMLInputElement).value
34
+ oninput?.(value)
35
+ }
27
36
  </script>
28
37
 
29
38
  <InputLabel {id} {label} />
@@ -34,9 +43,9 @@ function handleInput(event) {
34
43
  class="{inputStyles} py-1.5 px-3 border w-full rounded placeholder-neutral-500 text-base tracking-tight"
35
44
  {disabled}
36
45
  {rows}
37
- {...$$restProps}
38
- on:input={handleInput}
39
- />
46
+ {...rest}
47
+ oninput={handleInput}
48
+ ></textarea>
40
49
 
41
50
  {#if errorText}
42
51
  <InputError {errorText} />
@@ -1,25 +1,4 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- [x: string]: any;
5
- id?: string | undefined;
6
- label?: string | undefined;
7
- placeholder?: string | undefined;
8
- errorText?: string | undefined;
9
- disabled?: boolean | undefined;
10
- value?: string | number | undefined;
11
- rows?: number | undefined;
12
- };
13
- events: {
14
- input: CustomEvent<any>;
15
- } & {
16
- [evt: string]: CustomEvent<any>;
17
- };
18
- slots: {};
19
- };
20
- export type InputTextareaProps = typeof __propDef.props;
21
- export type InputTextareaEvents = typeof __propDef.events;
22
- export type InputTextareaSlots = typeof __propDef.slots;
23
- export default class InputTextarea extends SvelteComponent<InputTextareaProps, InputTextareaEvents, InputTextareaSlots> {
24
- }
25
- export {};
1
+ import type { InputTextareaProps } from './types';
2
+ declare const InputTextarea: import("svelte").Component<InputTextareaProps, {}, "value">;
3
+ type InputTextarea = ReturnType<typeof InputTextarea>;
4
+ export default InputTextarea;
@@ -1,32 +1,39 @@
1
- <script>import clsx from "clsx";
2
- import { createEventDispatcher } from "svelte";
3
- import { createSwitch } from "svelte-headlessui";
4
- import { dispatchWcEvent } from "./wcdispatch.js";
5
- const dispatch = createEventDispatcher();
6
- const sw = createSwitch({ label: "Set Preference" });
7
- let rootEl;
8
- export let id = Math.random().toString(36).slice(2, 7);
9
- export let checked = false;
10
- export let label = "";
11
- $:
12
- $sw.checked = checked;
13
- $:
14
- togleStyles = clsx({ "bg-gray-200": !$sw.checked }, { "bg-workspace-accent": $sw.checked });
15
- function handleChange() {
16
- checked = $sw.checked;
17
- dispatch("change", $sw.checked);
18
- dispatchWcEvent(rootEl, "change", $sw.checked);
19
- }
1
+ <script lang="ts">
2
+ import clsx from 'clsx'
3
+ import { createSwitch } from 'svelte-headlessui'
4
+ import type { InputToggleProps } from './types'
5
+ const sw = createSwitch({ label: 'Set Preference' })
6
+
7
+ let {
8
+ id = Math.random().toString(36).slice(2, 7),
9
+ label = '',
10
+ checked = $bindable(false),
11
+ onchange
12
+ }: InputToggleProps = $props()
13
+
14
+ $effect(() => {
15
+ $sw.checked = checked
16
+ })
17
+
18
+ let togleStyles = $derived(
19
+ clsx({ 'bg-gray-200': !$sw.checked }, { 'bg-workspace-accent': $sw.checked })
20
+ )
21
+
22
+ function handleChange() {
23
+ onchange?.($sw.checked)
24
+ checked = $sw.checked
25
+ }
20
26
  </script>
21
27
 
22
- <label bind:this={rootEl} class="flex w-full items-center justify-between space-x-2">
28
+ <label for={id} class="flex w-full items-center justify-between space-x-2">
23
29
  {#if label}
24
30
  <span class="text-base text-neutral-500">{label}</span>
25
31
  {/if}
26
32
  <button
33
+ {id}
27
34
  class="{togleStyles} relative inline-flex h-5 w-8 flex-shrink-0 cursor-pointer rounded-md border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-0 focus:ring-offset-0"
28
35
  use:sw.toggle
29
- on:click={handleChange}
36
+ onclick={handleChange}
30
37
  >
31
38
  <span class="sr-only">Use setting</span>
32
39
  <span
@@ -34,6 +41,6 @@ function handleChange() {
34
41
  class="{$sw.checked
35
42
  ? 'translate-x-3'
36
43
  : 'translate-x-0'} pointer-events-none inline-block h-4 w-4 transform rounded bg-white shadow ring-0 transition duration-200 ease-in-out"
37
- />
44
+ ></span>
38
45
  </button>
39
46
  </label>
@@ -1,20 +1,4 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- id?: string | undefined;
5
- checked?: boolean | undefined;
6
- label?: string | undefined;
7
- };
8
- events: {
9
- change: CustomEvent<any>;
10
- } & {
11
- [evt: string]: CustomEvent<any>;
12
- };
13
- slots: {};
14
- };
15
- export type InputToggleProps = typeof __propDef.props;
16
- export type InputToggleEvents = typeof __propDef.events;
17
- export type InputToggleSlots = typeof __propDef.slots;
18
- export default class InputToggle extends SvelteComponent<InputToggleProps, InputToggleEvents, InputToggleSlots> {
19
- }
20
- export {};
1
+ import type { InputToggleProps } from './types';
2
+ declare const InputToggle: import("svelte").Component<InputToggleProps, {}, "checked">;
3
+ type InputToggle = ReturnType<typeof InputToggle>;
4
+ export default InputToggle;
@@ -1,99 +1,110 @@
1
- <script>import { flip, shift, offset } from "svelte-floating-ui/dom";
2
- import { createFloatingActions } from "svelte-floating-ui";
3
- import clsx from "clsx";
4
- import { Icon } from "@steeze-ui/svelte-icon";
5
- import { ChevronDown, ChevronRight } from "@invopop/ui-icons";
6
- import { FolderL } from "@invopop/ui-icons";
7
- import { createEventDispatcher } from "svelte";
8
- import { resolveIcon } from "./helpers.js";
9
- import DrawerContext from "./DrawerContext.svelte";
10
- const [floatingRef, floatingContent] = createFloatingActions({
11
- strategy: "absolute",
12
- placement: "bottom-start",
13
- middleware: [offset(-4), flip(), shift()]
14
- });
15
- export let label = "";
16
- export let url = "";
17
- export let isFolderItem = false;
18
- export let collapsable = false;
19
- export let open = false;
20
- export let active = false;
21
- export let collapsedSidebar = false;
22
- export let iconTheme = "default";
23
- export let icon = void 0;
24
- export let children = void 0;
25
- let resolvedIcon;
26
- let hovered = false;
27
- let highlight = false;
28
- let leaveHoverTimeout = null;
29
- const dispatch = createEventDispatcher();
30
- $: {
31
- resolveIcon(icon).then((icon2) => {
32
- resolvedIcon = icon2;
33
- });
34
- }
35
- $:
36
- itemStyles = clsx(
37
- { "text-white font-medium": !isFolderItem },
38
- { "text-white-40": isFolderItem && !active },
39
- { "bg-white-10": active },
40
- { "border border-transparent hover:border-white-5 group p-2": collapsedSidebar },
41
- { "w-full px-2 py-1.5": !collapsedSidebar },
42
- {
43
- "bg-white-10 border-white-5 text-white": active
44
- },
45
- { "hover:bg-white-5 focus:bg-white-10": !active }
46
- );
47
- $:
48
- iconStyles = clsx({ "group-hover:text-white": collapsedSidebar });
49
- $:
50
- wrapperStyles = clsx({
51
- "ml-4 border-l border-white-10 pl-2 pt-0.5 relative": isFolderItem
52
- });
53
- $:
54
- items = [
1
+ <script lang="ts">
2
+ import MenuItem from './MenuItem.svelte'
3
+ import { flip, shift, offset } from 'svelte-floating-ui/dom'
4
+ import { createFloatingActions } from 'svelte-floating-ui'
5
+ import clsx from 'clsx'
6
+ import type { MenuItemProps, DrawerOption, AnyProp } from './types.ts'
7
+ import { Icon, type IconSource } from '@steeze-ui/svelte-icon'
8
+ import { ChevronDown, ChevronRight } from '@invopop/ui-icons'
9
+ import { FolderL } from '@invopop/ui-icons'
10
+ import { resolveIcon } from './helpers.js'
11
+ import DrawerContext from './DrawerContext.svelte'
12
+
13
+ const [floatingRef, floatingContent] = createFloatingActions({
14
+ strategy: 'absolute',
15
+ placement: 'bottom-start',
16
+ middleware: [offset(-4), flip(), shift()]
17
+ })
18
+
19
+ let {
20
+ label = '',
21
+ url = '',
22
+ isFolderItem = false,
23
+ collapsable = false,
24
+ open = $bindable(false),
25
+ active = false,
26
+ collapsedSidebar = false,
27
+ iconTheme = 'default',
28
+ icon = undefined,
29
+ children = undefined,
30
+ onclick
31
+ }: MenuItemProps = $props()
32
+
33
+ let resolvedIcon: IconSource | undefined = $state()
34
+ let hovered = $state(false)
35
+ let highlight = $state(false)
36
+ let leaveHoverTimeout: ReturnType<typeof setTimeout> | null = null
37
+ let itemStyles = $derived(
38
+ clsx(
39
+ { 'text-white font-medium': !isFolderItem },
40
+ { 'text-white-40': isFolderItem && !active },
41
+ { 'bg-white-10': active },
42
+ { 'border border-transparent hover:border-white-5 group p-2': collapsedSidebar },
43
+ { 'w-full px-2 py-1.5': !collapsedSidebar },
44
+ {
45
+ 'bg-white-10 border-white-5 text-white': active
46
+ },
47
+ { 'hover:bg-white-5 focus:bg-white-10': !active }
48
+ )
49
+ )
50
+ let iconStyles = $derived(clsx({ 'group-hover:text-white': collapsedSidebar }))
51
+ let wrapperStyles = $derived(
52
+ clsx({
53
+ 'ml-4 border-l border-white-10 pl-2 pt-0.5 relative': isFolderItem
54
+ })
55
+ )
56
+ let items = $derived([
55
57
  { label, value: url, selected: active, icon: resolvedIcon },
56
58
  ...(children || []).map((c) => ({
57
- label: c.label || "",
58
- value: c.url || "",
59
+ label: c.label || '',
60
+ value: c.url || '',
59
61
  selected: c.active,
60
62
  icon: FolderL
61
63
  }))
62
- ];
63
- function handleClick() {
64
- if (!url && collapsable) {
65
- open = !open;
64
+ ] as DrawerOption[])
65
+
66
+ $effect(() => {
67
+ resolveIcon(icon).then((res) => (resolvedIcon = res))
68
+ })
69
+
70
+ function handleClick() {
71
+ if (!url && collapsable) {
72
+ open = !open
73
+ }
74
+
75
+ onclick?.(url)
66
76
  }
67
- dispatch("click", url);
68
- }
69
- function handleClickChild(event) {
70
- hovered = false;
71
- dispatch("click", event.detail);
72
- }
73
- function handleHover() {
74
- highlight = true;
75
- if (leaveHoverTimeout) {
76
- clearTimeout(leaveHoverTimeout);
77
+
78
+ function handleClickChild(value: AnyProp) {
79
+ hovered = false
80
+ onclick?.(value as string)
81
+ }
82
+
83
+ function handleHover() {
84
+ highlight = true
85
+ if (leaveHoverTimeout) {
86
+ clearTimeout(leaveHoverTimeout)
87
+ }
88
+ hovered = true
89
+ }
90
+
91
+ function handleBlur() {
92
+ highlight = false
93
+ leaveHoverTimeout = setTimeout(() => {
94
+ hovered = false
95
+ }, 200)
77
96
  }
78
- hovered = true;
79
- }
80
- function handleBlur() {
81
- highlight = false;
82
- leaveHoverTimeout = setTimeout(() => {
83
- hovered = false;
84
- }, 200);
85
- }
86
97
  </script>
87
98
 
88
99
  <div class={wrapperStyles}>
89
100
  {#if isFolderItem && (highlight || active)}
90
- <div class="border-l border-white h-3 w-px absolute top-[14px] left-0 -m-px" />
101
+ <div class="border-l border-white h-3 w-px absolute top-[14px] left-0 -m-px"></div>
91
102
  {/if}
92
103
  <button
93
104
  use:floatingRef
94
- on:mouseenter={handleHover}
95
- on:mouseleave={handleBlur}
96
- on:click={handleClick}
105
+ onmouseenter={handleHover}
106
+ onmouseleave={handleBlur}
107
+ onclick={handleClick}
97
108
  title={label}
98
109
  class="{itemStyles} text-base border border-transparent flex items-center justify-between hover:text-white focus:text-white rounded-md"
99
110
  >
@@ -107,7 +118,8 @@ function handleBlur() {
107
118
  </span>
108
119
  {#if collapsable && !collapsedSidebar}
109
120
  <button
110
- on:click|stopPropagation={() => {
121
+ onclick={(e) => {
122
+ e.stopPropagation()
111
123
  open = !open
112
124
  }}
113
125
  >
@@ -121,18 +133,18 @@ function handleBlur() {
121
133
  <div
122
134
  use:floatingContent
123
135
  role="contentinfo"
124
- on:mouseenter={handleHover}
125
- on:mouseleave={handleBlur}
136
+ onmouseenter={handleHover}
137
+ onmouseleave={handleBlur}
126
138
  class="pt-4 z-30"
127
139
  >
128
- <DrawerContext on:click={handleClickChild} {items} />
140
+ <DrawerContext onclick={handleClickChild} {items} />
129
141
  </div>
130
142
  {/if}
131
143
  {:else if open || !collapsable}
132
144
  <ul>
133
145
  {#each children as child}
134
146
  <li>
135
- <svelte:self {...child} isFolderItem on:click />
147
+ <MenuItem {...child} isFolderItem {onclick} />
136
148
  </li>
137
149
  {/each}
138
150
  </ul>
@@ -1,29 +1,5 @@
1
- import { SvelteComponent } from "svelte";
2
- import type { IconTheme, MenuItemProps } from './types.ts';
3
- import { type IconSource } from '@steeze-ui/svelte-icon';
4
- declare const __propDef: {
5
- props: {
6
- label?: string | undefined;
7
- url?: string | undefined;
8
- isFolderItem?: boolean | undefined;
9
- collapsable?: boolean | undefined;
10
- open?: boolean | undefined;
11
- active?: boolean | undefined;
12
- collapsedSidebar?: boolean | undefined;
13
- iconTheme?: IconTheme | undefined;
14
- icon?: IconSource | string | undefined;
15
- children?: MenuItemProps[] | undefined;
16
- };
17
- events: {
18
- click: CustomEvent<any>;
19
- } & {
20
- [evt: string]: CustomEvent<any>;
21
- };
22
- slots: {};
23
- };
24
- type MenuItemProps_ = typeof __propDef.props;
25
- export { MenuItemProps_ as MenuItemProps };
26
- export type MenuItemEvents = typeof __propDef.events;
27
- export type MenuItemSlots = typeof __propDef.slots;
28
- export default class MenuItem extends SvelteComponent<MenuItemProps, MenuItemEvents, MenuItemSlots> {
29
- }
1
+ import MenuItem from './MenuItem.svelte';
2
+ import type { MenuItemProps } from './types.ts';
3
+ declare const MenuItem: import("svelte").Component<MenuItemProps, {}, "open">;
4
+ type MenuItem = ReturnType<typeof MenuItem>;
5
+ export default MenuItem;