@insymetri/styleguide 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 (148) hide show
  1. package/dist/IIActionGroup/IIActionGroup.svelte +11 -0
  2. package/dist/IIActionGroup/IIActionGroup.svelte.d.ts +6 -0
  3. package/dist/IIActionGroup/index.d.ts +1 -0
  4. package/dist/IIActionGroup/index.js +1 -0
  5. package/dist/IIAsyncState/IIAsyncState.svelte +50 -0
  6. package/dist/IIAsyncState/IIAsyncState.svelte.d.ts +15 -0
  7. package/dist/IIAsyncState/index.d.ts +1 -0
  8. package/dist/IIAsyncState/index.js +1 -0
  9. package/dist/IIAuditTrail/IIAuditTrail.svelte +167 -0
  10. package/dist/IIAuditTrail/IIAuditTrail.svelte.d.ts +13 -0
  11. package/dist/IIAuditTrail/IIAuditTrail.types.d.ts +14 -0
  12. package/dist/IIAuditTrail/IIAuditTrail.types.js +1 -0
  13. package/dist/IIAuditTrail/index.d.ts +2 -0
  14. package/dist/IIAuditTrail/index.js +1 -0
  15. package/dist/IIBadge/IIBadge.svelte +46 -0
  16. package/dist/IIBadge/IIBadge.svelte.d.ts +11 -0
  17. package/dist/IIBadge/IIBadge.types.d.ts +1 -0
  18. package/dist/IIBadge/IIBadge.types.js +1 -0
  19. package/dist/IIBadge/index.d.ts +2 -0
  20. package/dist/IIBadge/index.js +1 -0
  21. package/dist/IIButton/IIButton.svelte +103 -0
  22. package/dist/IIButton/IIButton.svelte.d.ts +23 -0
  23. package/dist/IIButton/index.d.ts +1 -0
  24. package/dist/IIButton/index.js +1 -0
  25. package/dist/IICheckbox/IICheckbox.svelte +66 -0
  26. package/dist/IICheckbox/IICheckbox.svelte.d.ts +16 -0
  27. package/dist/IICheckbox/index.d.ts +1 -0
  28. package/dist/IICheckbox/index.js +1 -0
  29. package/dist/IICheckboxList/IICheckboxList.svelte +15 -0
  30. package/dist/IICheckboxList/IICheckboxList.svelte.d.ts +7 -0
  31. package/dist/IICheckboxList/index.d.ts +1 -0
  32. package/dist/IICheckboxList/index.js +1 -0
  33. package/dist/IICombobox/IICombobox.svelte +158 -0
  34. package/dist/IICombobox/IICombobox.svelte.d.ts +39 -0
  35. package/dist/IICombobox/index.d.ts +1 -0
  36. package/dist/IICombobox/index.js +1 -0
  37. package/dist/IIDatePicker/IIDatePicker.svelte +107 -0
  38. package/dist/IIDatePicker/IIDatePicker.svelte.d.ts +9 -0
  39. package/dist/IIDatePicker/index.d.ts +1 -0
  40. package/dist/IIDatePicker/index.js +1 -0
  41. package/dist/IIDropdownInput/IIDropdownInput.svelte +76 -0
  42. package/dist/IIDropdownInput/IIDropdownInput.svelte.d.ts +15 -0
  43. package/dist/IIDropdownInput/index.d.ts +1 -0
  44. package/dist/IIDropdownInput/index.js +1 -0
  45. package/dist/IIDropdownMenu/IIDropdownMenu.svelte +74 -0
  46. package/dist/IIDropdownMenu/IIDropdownMenu.svelte.d.ts +19 -0
  47. package/dist/IIDropdownMenu/index.d.ts +1 -0
  48. package/dist/IIDropdownMenu/index.js +1 -0
  49. package/dist/IIEditableBadges/IIEditableBadges.svelte +91 -0
  50. package/dist/IIEditableBadges/IIEditableBadges.svelte.d.ts +17 -0
  51. package/dist/IIEditableBadges/index.d.ts +1 -0
  52. package/dist/IIEditableBadges/index.js +1 -0
  53. package/dist/IIEditableText/IIEditableText.svelte +143 -0
  54. package/dist/IIEditableText/IIEditableText.svelte.d.ts +12 -0
  55. package/dist/IIEditableText/index.d.ts +1 -0
  56. package/dist/IIEditableText/index.js +1 -0
  57. package/dist/IIEmptyState/IIEmptyState.svelte +29 -0
  58. package/dist/IIEmptyState/IIEmptyState.svelte.d.ts +9 -0
  59. package/dist/IIEmptyState/index.d.ts +1 -0
  60. package/dist/IIEmptyState/index.js +1 -0
  61. package/dist/IIFilterChip/IIFilterChip.svelte +47 -0
  62. package/dist/IIFilterChip/IIFilterChip.svelte.d.ts +9 -0
  63. package/dist/IIFilterChip/index.d.ts +1 -0
  64. package/dist/IIFilterChip/index.js +1 -0
  65. package/dist/IIFormField/IIFormField.svelte +18 -0
  66. package/dist/IIFormField/IIFormField.svelte.d.ts +9 -0
  67. package/dist/IIFormField/index.d.ts +1 -0
  68. package/dist/IIFormField/index.js +1 -0
  69. package/dist/IIInput/IIInput.svelte +69 -0
  70. package/dist/IIInput/IIInput.svelte.d.ts +15 -0
  71. package/dist/IIInput/index.d.ts +1 -0
  72. package/dist/IIInput/index.js +1 -0
  73. package/dist/IIModal/IIModal.svelte +76 -0
  74. package/dist/IIModal/IIModal.svelte.d.ts +15 -0
  75. package/dist/IIModal/index.d.ts +1 -0
  76. package/dist/IIModal/index.js +1 -0
  77. package/dist/IIOverflowActions/IIOverflowActions.svelte +104 -0
  78. package/dist/IIOverflowActions/IIOverflowActions.svelte.d.ts +16 -0
  79. package/dist/IIOverflowActions/index.d.ts +1 -0
  80. package/dist/IIOverflowActions/index.js +1 -0
  81. package/dist/IIStatusBadge/IIStatusBadge.svelte +29 -0
  82. package/dist/IIStatusBadge/IIStatusBadge.svelte.d.ts +9 -0
  83. package/dist/IIStatusBadge/index.d.ts +1 -0
  84. package/dist/IIStatusBadge/index.js +1 -0
  85. package/dist/IISwitch/IISwitch.svelte +60 -0
  86. package/dist/IISwitch/IISwitch.svelte.d.ts +15 -0
  87. package/dist/IISwitch/index.d.ts +1 -0
  88. package/dist/IISwitch/index.js +1 -0
  89. package/dist/IITable/IITable.svelte +17 -0
  90. package/dist/IITable/IITable.svelte.d.ts +8 -0
  91. package/dist/IITable/index.d.ts +1 -0
  92. package/dist/IITable/index.js +1 -0
  93. package/dist/IITableSkeleton/IITableSkeleton.svelte +32 -0
  94. package/dist/IITableSkeleton/IITableSkeleton.svelte.d.ts +8 -0
  95. package/dist/IITableSkeleton/index.d.ts +1 -0
  96. package/dist/IITableSkeleton/index.js +1 -0
  97. package/dist/IITabs/IITabs.svelte +139 -0
  98. package/dist/IITabs/IITabs.svelte.d.ts +19 -0
  99. package/dist/IITabs/index.d.ts +1 -0
  100. package/dist/IITabs/index.js +1 -0
  101. package/dist/IITaskCardSkeleton/IITaskCardSkeleton.svelte +15 -0
  102. package/dist/IITaskCardSkeleton/IITaskCardSkeleton.svelte.d.ts +26 -0
  103. package/dist/IITaskCardSkeleton/index.d.ts +1 -0
  104. package/dist/IITaskCardSkeleton/index.js +1 -0
  105. package/dist/IITextarea/IITextarea.svelte +79 -0
  106. package/dist/IITextarea/IITextarea.svelte.d.ts +15 -0
  107. package/dist/IITextarea/index.d.ts +1 -0
  108. package/dist/IITextarea/index.js +1 -0
  109. package/dist/IIToaster/IIToaster.svelte +5 -0
  110. package/dist/IIToaster/IIToaster.svelte.d.ts +18 -0
  111. package/dist/IIToaster/index.d.ts +1 -0
  112. package/dist/IIToaster/index.js +1 -0
  113. package/dist/IIViewFilterChip/IIViewFilterChip.svelte +37 -0
  114. package/dist/IIViewFilterChip/IIViewFilterChip.svelte.d.ts +8 -0
  115. package/dist/IIViewFilterChip/index.d.ts +1 -0
  116. package/dist/IIViewFilterChip/index.js +1 -0
  117. package/dist/Typography/Typography.svelte +67 -0
  118. package/dist/Typography/Typography.svelte.d.ts +18 -0
  119. package/dist/Typography/index.d.ts +1 -0
  120. package/dist/Typography/index.js +1 -0
  121. package/dist/icons.d.ts +92 -0
  122. package/dist/icons.js +104 -0
  123. package/dist/index.d.ts +33 -0
  124. package/dist/index.js +35 -0
  125. package/dist/style/base.css +71 -0
  126. package/dist/style/colors.css +183 -0
  127. package/dist/style/global.css +2 -0
  128. package/dist/style/index.d.ts +1 -0
  129. package/dist/style/index.js +1 -0
  130. package/dist/style/tailwind/animations.js +89 -0
  131. package/dist/style/tailwind/colors.d.ts +217 -0
  132. package/dist/style/tailwind/colors.js +239 -0
  133. package/dist/style/tailwind/preset.js +103 -0
  134. package/dist/style/tailwind/radius.d.ts +1 -0
  135. package/dist/style/tailwind/radius.js +5 -0
  136. package/dist/style/tailwind/shadows.d.ts +15 -0
  137. package/dist/style/tailwind/shadows.js +27 -0
  138. package/dist/style/tailwind/spacing.d.ts +1 -0
  139. package/dist/style/tailwind/spacing.js +37 -0
  140. package/dist/style/tailwind/typography.d.ts +100 -0
  141. package/dist/style/tailwind/typography.js +39 -0
  142. package/dist/style/tailwind/z-index.d.ts +1 -0
  143. package/dist/style/tailwind/z-index.js +7 -0
  144. package/dist/toast.d.ts +16 -0
  145. package/dist/toast.js +24 -0
  146. package/dist/utils/cn.d.ts +2 -0
  147. package/dist/utils/cn.js +4 -0
  148. package/package.json +79 -0
@@ -0,0 +1 @@
1
+ export { default as IIStatusBadge } from './IIStatusBadge.svelte';
@@ -0,0 +1,60 @@
1
+ <script lang="ts">
2
+ import type {Snippet} from 'svelte'
3
+ import {Switch} from 'bits-ui'
4
+ import {cn} from '../utils/cn'
5
+
6
+ type Props = {
7
+ checked: boolean
8
+ onCheckedChange?: (checked: boolean) => void
9
+ label?: string
10
+ children?: Snippet
11
+ disabled?: boolean
12
+ name?: string
13
+ value?: string
14
+ class?: string
15
+ [key: string]: unknown
16
+ }
17
+
18
+ let {
19
+ checked = $bindable(),
20
+ onCheckedChange,
21
+ label,
22
+ children,
23
+ disabled = false,
24
+ name,
25
+ value,
26
+ class: className,
27
+ ...restProps
28
+ }: Props = $props()
29
+ </script>
30
+
31
+ <label class={cn('flex items-center gap-12', className)}>
32
+ {#if label}
33
+ <span
34
+ class={cn('text-small text-secondary select-none cursor-default', disabled && 'opacity-50 cursor-not-allowed')}
35
+ >{label}</span
36
+ >
37
+ {:else if children}
38
+ <span
39
+ class={cn('text-small text-secondary select-none cursor-default', disabled && 'opacity-50 cursor-not-allowed')}
40
+ >
41
+ {@render children()}
42
+ </span>
43
+ {/if}
44
+ <Switch.Root
45
+ class="group relative w-44 h-24 bg-muted rounded-full cursor-default transition-all duration-fast shrink-0 appearance-none border-none data-[state=checked]:bg-primary data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 motion-reduce:transition-none"
46
+ {checked}
47
+ onCheckedChange={newChecked => {
48
+ checked = newChecked
49
+ onCheckedChange?.(newChecked)
50
+ }}
51
+ {disabled}
52
+ {name}
53
+ {value}
54
+ {...restProps}
55
+ >
56
+ <Switch.Thumb
57
+ class="block w-18 h-18 bg-white rounded-full transition-all duration-fast translate-x-3 shadow-subtle group-data-[state=checked]:translate-x-23 motion-reduce:transition-none"
58
+ />
59
+ </Switch.Root>
60
+ </label>
@@ -0,0 +1,15 @@
1
+ import type { Snippet } from 'svelte';
2
+ type Props = {
3
+ checked: boolean;
4
+ onCheckedChange?: (checked: boolean) => void;
5
+ label?: string;
6
+ children?: Snippet;
7
+ disabled?: boolean;
8
+ name?: string;
9
+ value?: string;
10
+ class?: string;
11
+ [key: string]: unknown;
12
+ };
13
+ declare const IISwitch: import("svelte").Component<Props, {}, "checked">;
14
+ type IISwitch = ReturnType<typeof IISwitch>;
15
+ export default IISwitch;
@@ -0,0 +1 @@
1
+ export { default as IISwitch } from './IISwitch.svelte';
@@ -0,0 +1 @@
1
+ export { default as IISwitch } from './IISwitch.svelte';
@@ -0,0 +1,17 @@
1
+ <script lang="ts">
2
+ import type {Snippet} from 'svelte'
3
+ import {cn} from '../utils/cn'
4
+
5
+ type Props = {
6
+ children?: Snippet
7
+ class?: string
8
+ }
9
+
10
+ let {children, class: className}: Props = $props()
11
+ </script>
12
+
13
+ <div class={cn('bg-surface border border-primary rounded-10 overflow-x-auto overflow-y-hidden', className)}>
14
+ <table class="w-full border-collapse">
15
+ {@render children?.()}
16
+ </table>
17
+ </div>
@@ -0,0 +1,8 @@
1
+ import type { Snippet } from 'svelte';
2
+ type Props = {
3
+ children?: Snippet;
4
+ class?: string;
5
+ };
6
+ declare const IITable: import("svelte").Component<Props, {}, "">;
7
+ type IITable = ReturnType<typeof IITable>;
8
+ export default IITable;
@@ -0,0 +1 @@
1
+ export { default as IITable } from './IITable.svelte';
@@ -0,0 +1 @@
1
+ export { default as IITable } from './IITable.svelte';
@@ -0,0 +1,32 @@
1
+ <script lang="ts">
2
+ import {cn} from '../utils/cn'
3
+
4
+ type SkeletonType = 'text' | 'text-short' | 'badge' | 'button'
5
+
6
+ type Props = {
7
+ rows: number
8
+ columns: SkeletonType[]
9
+ }
10
+
11
+ let {rows, columns}: Props = $props()
12
+
13
+ const typeClasses: Record<string, string> = {
14
+ text: 'h-16 w-4/5',
15
+ 'text-short': 'h-16 w-2/5',
16
+ badge: 'h-24 w-100',
17
+ button: 'h-8 w-80',
18
+ }
19
+ </script>
20
+
21
+ <!-- eslint-disable @typescript-eslint/no-unused-vars -->
22
+ {#each Array(rows) as _, i (i)}
23
+ <tr class="border-b border-primary last:border-b-0" style="transition: all 150ms ease">
24
+ {#each columns as columnType, j (j)}
25
+ <td class="px-16 py-8 text-small text-body">
26
+ <div class={cn('skeleton-bg rounded-4', typeClasses[columnType])}></div>
27
+ </td>
28
+ {/each}
29
+ </tr>
30
+ {/each}
31
+
32
+ <!-- eslint-enable @typescript-eslint/no-unused-vars -->
@@ -0,0 +1,8 @@
1
+ type SkeletonType = 'text' | 'text-short' | 'badge' | 'button';
2
+ type Props = {
3
+ rows: number;
4
+ columns: SkeletonType[];
5
+ };
6
+ declare const IITableSkeleton: import("svelte").Component<Props, {}, "">;
7
+ type IITableSkeleton = ReturnType<typeof IITableSkeleton>;
8
+ export default IITableSkeleton;
@@ -0,0 +1 @@
1
+ export { default as IITableSkeleton } from './IITableSkeleton.svelte';
@@ -0,0 +1 @@
1
+ export { default as IITableSkeleton } from './IITableSkeleton.svelte';
@@ -0,0 +1,139 @@
1
+ <script lang="ts">
2
+ import type {Snippet} from 'svelte'
3
+ import {DropdownMenu, Tabs, type WithoutChildrenOrChild} from 'bits-ui'
4
+ import {IconExpandMore, IconCheck} from '../icons'
5
+ import {cn} from '../utils/cn'
6
+
7
+ type Tab = {
8
+ value: string
9
+ label: string
10
+ icon?: Snippet
11
+ disabled?: boolean
12
+ trigger?: Snippet
13
+ content: Snippet
14
+ }
15
+
16
+ type Props = WithoutChildrenOrChild<Tabs.RootProps> & {
17
+ tabs: Tab[]
18
+ class?: string
19
+ listClass?: string
20
+ contentClass?: string
21
+ }
22
+
23
+ let {
24
+ value = $bindable(),
25
+ tabs,
26
+ class: className,
27
+ listClass,
28
+ contentClass,
29
+ onValueChange,
30
+ ...restProps
31
+ }: Props = $props()
32
+
33
+ let internalRef = $state(null)
34
+ let listEl = $state<HTMLElement | null>(null)
35
+ let overflowing = $state(false)
36
+ let dropdownOpen = $state(false)
37
+
38
+ const activeLabel = $derived(tabs.find(t => t.value === value)?.label ?? '')
39
+
40
+ $effect(() => {
41
+ if (!listEl) return
42
+
43
+ function check() {
44
+ if (!listEl) return
45
+ overflowing = listEl.scrollWidth > listEl.clientWidth + 1
46
+ }
47
+
48
+ check()
49
+ const observer = new ResizeObserver(check)
50
+ observer.observe(listEl)
51
+ return () => observer.disconnect()
52
+ })
53
+
54
+ function handleTabSelect(tab: Tab) {
55
+ value = tab.value
56
+ onValueChange?.(tab.value)
57
+ dropdownOpen = false
58
+ }
59
+ </script>
60
+
61
+ <Tabs.Root
62
+ bind:value
63
+ bind:ref={internalRef}
64
+ {onValueChange}
65
+ {...restProps}
66
+ class={cn('flex flex-col w-full', className)}
67
+ >
68
+ {#if overflowing}
69
+ <div class="flex items-center border-b border-primary h-48 px-24" style="padding-left: calc(2.4rem - 1.2rem - 1px)">
70
+ <DropdownMenu.Root bind:open={dropdownOpen}>
71
+ <DropdownMenu.Trigger
72
+ class="[all:unset] inline-flex items-center gap-4 py-4 pr-8 pl-12 border border-primary rounded-10 bg-surface cursor-default transition-all duration-fast hover:border-strong motion-reduce:transition-none"
73
+ >
74
+ <span class="text-small-emphasis text-body">{activeLabel}</span>
75
+ <IconExpandMore class="w-14 h-14 text-secondary shrink-0" />
76
+ </DropdownMenu.Trigger>
77
+ <DropdownMenu.Content
78
+ class="min-w-100 bg-surface border border-primary rounded-10 shadow-dropdown p-4 z-12"
79
+ side="bottom"
80
+ align="start"
81
+ >
82
+ {#each tabs as tab (tab.value)}
83
+ <DropdownMenu.Item
84
+ disabled={tab.disabled}
85
+ class={cn(
86
+ 'flex items-center justify-between gap-12 px-12 py-8 rounded-4 text-small-emphasis text-secondary cursor-default outline-none transition-all duration-fast hover:bg-background hover:text-body data-[highlighted]:bg-background data-[highlighted]:text-body data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed data-[disabled]:pointer-events-none motion-reduce:transition-none',
87
+ value === tab.value && 'text-body'
88
+ )}
89
+ onSelect={() => handleTabSelect(tab)}
90
+ >
91
+ <span>{tab.label}</span>
92
+ {#if value === tab.value}
93
+ <IconCheck class="w-14 h-14 text-accent shrink-0" />
94
+ {/if}
95
+ </DropdownMenu.Item>
96
+ {/each}
97
+ </DropdownMenu.Content>
98
+ </DropdownMenu.Root>
99
+ </div>
100
+ {/if}
101
+ <Tabs.List
102
+ bind:ref={listEl}
103
+ class={cn(
104
+ 'flex border-b border-primary gap-16 pl-24 overflow-hidden h-48',
105
+ overflowing && 'h-0 invisible border-b-0 py-0',
106
+ listClass
107
+ )}
108
+ >
109
+ {#each tabs as tab (tab.value)}
110
+ <Tabs.Trigger
111
+ value={tab.value}
112
+ disabled={tab.disabled}
113
+ class="appearance-none border-none bg-transparent outline-none inline-flex items-center gap-8 p-0 h-full text-small font-normal text-tertiary cursor-default -mb-px whitespace-nowrap relative shrink-0 hover:text-secondary data-[state=active]:text-body data-[disabled]:text-tertiary data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 motion-reduce:[transition:none] [transition:color_0.15s_ease] after:content-[''] after:absolute after:bottom-0 after:left-1/2 after:w-0 after:-translate-x-1/2 after:[height:1.5px] after:[transition:width_0.15s_ease,background-color_0.15s_ease] data-[state=active]:after:w-full data-[state=active]:after:bg-dark [&:hover:not([data-disabled]):not([data-state=active])]:after:w-3/5 [&:hover:not([data-disabled]):not([data-state=active])]:after:bg-dark-secondary"
114
+ >
115
+ {#if tab.trigger}
116
+ {@render tab.trigger()}
117
+ {:else}
118
+ {#if tab.icon}
119
+ <div class="w-[1.25em] h-[1.25em] flex items-center justify-center">
120
+ {@render tab.icon()}
121
+ </div>
122
+ {/if}
123
+ {tab.label}
124
+ {/if}
125
+ </Tabs.Trigger>
126
+ {/each}
127
+ </Tabs.List>
128
+ {#each tabs as tab (tab.value)}
129
+ <Tabs.Content
130
+ value={tab.value}
131
+ class={cn(
132
+ 'p-8 outline-none focus-visible:outline-2 focus-visible:outline-primary focus-visible:outline-offset-2 focus-visible:rounded-4',
133
+ contentClass
134
+ )}
135
+ >
136
+ {@render tab.content()}
137
+ </Tabs.Content>
138
+ {/each}
139
+ </Tabs.Root>
@@ -0,0 +1,19 @@
1
+ import type { Snippet } from 'svelte';
2
+ import { Tabs, type WithoutChildrenOrChild } from 'bits-ui';
3
+ type Tab = {
4
+ value: string;
5
+ label: string;
6
+ icon?: Snippet;
7
+ disabled?: boolean;
8
+ trigger?: Snippet;
9
+ content: Snippet;
10
+ };
11
+ type Props = WithoutChildrenOrChild<Tabs.RootProps> & {
12
+ tabs: Tab[];
13
+ class?: string;
14
+ listClass?: string;
15
+ contentClass?: string;
16
+ };
17
+ declare const IITabs: import("svelte").Component<Props, {}, "value">;
18
+ type IITabs = ReturnType<typeof IITabs>;
19
+ export default IITabs;
@@ -0,0 +1 @@
1
+ export { default as IITabs } from './IITabs.svelte';
@@ -0,0 +1 @@
1
+ export { default as IITabs } from './IITabs.svelte';
@@ -0,0 +1,15 @@
1
+ <div class="bg-surface border border-primary rounded-10 px-24 py-12 flex gap-16 max-md:flex-col">
2
+ <div class="flex-1 flex flex-col gap-12">
3
+ <div class="mb-8">
4
+ <div class="h-24 w-3/5 shimmer-bg rounded-4"></div>
5
+ </div>
6
+ <div class="h-16 w-17/20 shimmer-bg rounded-4"></div>
7
+ <div class="flex items-center gap-16 flex-wrap max-md:flex-col max-md:gap-8">
8
+ <div class="h-24 w-16 shimmer-bg rounded-4"></div>
9
+ <div class="h-24 w-16 shimmer-bg rounded-4"></div>
10
+ <div class="h-16 w-32 shimmer-bg rounded-4"></div>
11
+ <div class="h-16 w-32 shimmer-bg rounded-4"></div>
12
+ </div>
13
+ </div>
14
+ <div class="h-40 w-24 shimmer-bg rounded-10 self-center"></div>
15
+ </div>
@@ -0,0 +1,26 @@
1
+ export default IITaskCardSkeleton;
2
+ type IITaskCardSkeleton = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const IITaskCardSkeleton: $$__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
+ }
@@ -0,0 +1 @@
1
+ export { default as IITaskCardSkeleton } from './IITaskCardSkeleton.svelte';
@@ -0,0 +1 @@
1
+ export { default as IITaskCardSkeleton } from './IITaskCardSkeleton.svelte';
@@ -0,0 +1,79 @@
1
+ <script lang="ts">
2
+ import type {HTMLTextareaAttributes} from 'svelte/elements'
3
+ import {onMount} from 'svelte'
4
+ import {cn} from '../utils/cn'
5
+
6
+ type Props = HTMLTextareaAttributes & {
7
+ label?: string
8
+ errorMessage?: string
9
+ helperText?: string
10
+ error?: boolean
11
+ disabled?: boolean
12
+ value?: string
13
+ rows?: number
14
+ ref?: HTMLTextAreaElement
15
+ class?: string
16
+ }
17
+
18
+ let {
19
+ label,
20
+ errorMessage,
21
+ helperText,
22
+ error = false,
23
+ disabled = false,
24
+ value = $bindable(),
25
+ rows = 3,
26
+ ref = $bindable(),
27
+ class: className,
28
+ ...restProps
29
+ }: Props = $props()
30
+
31
+ const showError = $derived(error || !!errorMessage)
32
+
33
+ function autoResize(textarea: HTMLTextAreaElement) {
34
+ textarea.style.height = 'auto'
35
+ textarea.style.height = `${textarea.scrollHeight}px`
36
+ }
37
+
38
+ function handleInput(event: Event) {
39
+ const textarea = event.target as HTMLTextAreaElement
40
+ autoResize(textarea)
41
+ }
42
+
43
+ onMount(() => {
44
+ if (ref) {
45
+ autoResize(ref)
46
+ }
47
+ })
48
+
49
+ $effect(() => {
50
+ if (ref && value !== undefined) {
51
+ autoResize(ref)
52
+ }
53
+ })
54
+ </script>
55
+
56
+ <div class={cn('flex flex-col gap-4', className)}>
57
+ {#if label}
58
+ <label for={restProps.id} class="text-small-emphasis text-body">
59
+ {label}
60
+ </label>
61
+ {/if}
62
+ <textarea
63
+ bind:this={ref}
64
+ bind:value
65
+ {disabled}
66
+ {rows}
67
+ class={cn(
68
+ 'py-6 px-12 text-small font-[family-name:var(--font-family)] text-body bg-surface border border-strong rounded-10 transition-all duration-fast outline-none w-full box-border resize-none overflow-hidden min-h-16 placeholder:text-tertiary focus:border-primary focus:ring-3 focus:ring-primary disabled:bg-gray-100 disabled:text-secondary disabled:cursor-not-allowed motion-reduce:transition-none',
69
+ showError && 'border-error focus:border-error focus:ring-error'
70
+ )}
71
+ oninput={handleInput}
72
+ {...restProps}
73
+ ></textarea>
74
+ {#if showError && errorMessage}
75
+ <span class="text-tiny text-error">{errorMessage}</span>
76
+ {:else if helperText}
77
+ <span class="text-tiny text-secondary">{helperText}</span>
78
+ {/if}
79
+ </div>
@@ -0,0 +1,15 @@
1
+ import type { HTMLTextareaAttributes } from 'svelte/elements';
2
+ type Props = HTMLTextareaAttributes & {
3
+ label?: string;
4
+ errorMessage?: string;
5
+ helperText?: string;
6
+ error?: boolean;
7
+ disabled?: boolean;
8
+ value?: string;
9
+ rows?: number;
10
+ ref?: HTMLTextAreaElement;
11
+ class?: string;
12
+ };
13
+ declare const IITextarea: import("svelte").Component<Props, {}, "value" | "ref">;
14
+ type IITextarea = ReturnType<typeof IITextarea>;
15
+ export default IITextarea;
@@ -0,0 +1 @@
1
+ export { default as IITextarea } from './IITextarea.svelte';
@@ -0,0 +1 @@
1
+ export { default as IITextarea } from './IITextarea.svelte';
@@ -0,0 +1,5 @@
1
+ <script lang="ts">
2
+ import {Toaster} from 'svelte-sonner'
3
+ </script>
4
+
5
+ <Toaster position="bottom-right" closeButton={true} richColors={true} duration={4000} visibleToasts={5} theme="light" />
@@ -0,0 +1,18 @@
1
+ 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> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ declare const IIToaster: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, {}, string>;
17
+ type IIToaster = InstanceType<typeof IIToaster>;
18
+ export default IIToaster;
@@ -0,0 +1 @@
1
+ export { default as IIToaster } from './IIToaster.svelte';
@@ -0,0 +1 @@
1
+ export { default as IIToaster } from './IIToaster.svelte';
@@ -0,0 +1,37 @@
1
+ <script lang="ts">
2
+ type Props = {
3
+ fieldLabel: string
4
+ operator: string
5
+ value: string
6
+ }
7
+
8
+ let {fieldLabel, operator, value}: Props = $props()
9
+
10
+ const operatorDisplay = $derived.by(() => {
11
+ const map: Record<string, string> = {
12
+ '=': 'is',
13
+ '!=': 'is not',
14
+ '<': '<',
15
+ '>': '>',
16
+ '<=': '<=',
17
+ '>=': '>=',
18
+ IN: 'in',
19
+ 'NOT IN': 'not in',
20
+ IS: 'is',
21
+ 'IS NOT': 'is not',
22
+ IS_EMPTY: 'is empty',
23
+ IS_NOT_EMPTY: 'is not empty',
24
+ }
25
+ return map[operator] || operator
26
+ })
27
+ </script>
28
+
29
+ <span
30
+ class="inline-flex items-center gap-4 px-8 py-4 bg-gray-100 border border-gray-200 rounded-full text-tiny text-secondary cursor-default"
31
+ >
32
+ <span class="flex items-center gap-4">
33
+ <span class="font-medium">{fieldLabel}</span>
34
+ <span class="text-tertiary">{operatorDisplay}</span>
35
+ <span class="font-semibold">{value || 'NULL'}</span>
36
+ </span>
37
+ </span>
@@ -0,0 +1,8 @@
1
+ type Props = {
2
+ fieldLabel: string;
3
+ operator: string;
4
+ value: string;
5
+ };
6
+ declare const IIViewFilterChip: import("svelte").Component<Props, {}, "">;
7
+ type IIViewFilterChip = ReturnType<typeof IIViewFilterChip>;
8
+ export default IIViewFilterChip;
@@ -0,0 +1 @@
1
+ export { default as IIViewFilterChip } from './IIViewFilterChip.svelte';
@@ -0,0 +1 @@
1
+ export { default as IIViewFilterChip } from './IIViewFilterChip.svelte';
@@ -0,0 +1,67 @@
1
+ <script lang="ts">
2
+ const fontSizes = [
3
+ {name: 'text-display-lg', class: 'text-display-lg', desc: '40px / 1.1'},
4
+ {name: 'text-display-md', class: 'text-display-md', desc: '30px / 1.2'},
5
+ {name: 'text-h1', class: 'text-h1', desc: '24px / 32px / 600'},
6
+ {name: 'text-h2', class: 'text-h2', desc: '20px / 28px / 600'},
7
+ {name: 'text-h3', class: 'text-h3', desc: '18px / 24px / 600'},
8
+ {name: 'text-h4', class: 'text-h4', desc: '16px / 20px / 600'},
9
+ {name: 'text-h5', class: 'text-h5', desc: '14px / 20px / 600'},
10
+ {name: 'text-h6', class: 'text-h6', desc: '13px / 16px / 600'},
11
+ {name: 'text-m1', class: 'text-m1', desc: '20px / 28px / 300'},
12
+ {name: 'text-m2', class: 'text-m2', desc: '16px / 24px / 300'},
13
+ {name: 'text-m3', class: 'text-m3', desc: '14px / 20px / 300'},
14
+ {name: 'text-m3-emphasis', class: 'text-m3-emphasis', desc: '13px / 20px / 500'},
15
+ {name: 'text-m3-small', class: 'text-m3-small', desc: '13px / 20px / 400'},
16
+ {name: 'text-large', class: 'text-large', desc: '16px / 20px / 400'},
17
+ {name: 'text-large-emphasis', class: 'text-large-emphasis', desc: '16px / 20px / 500'},
18
+ {name: 'text-default', class: 'text-default', desc: '14px / 16px / 400'},
19
+ {name: 'text-emphasis', class: 'text-emphasis', desc: '14px / 16px / 500'},
20
+ {name: 'text-strong', class: 'text-strong', desc: '14px / 16px / 600'},
21
+ {name: 'text-small', class: 'text-small', desc: '13px / 16px / 400'},
22
+ {name: 'text-small-emphasis', class: 'text-small-emphasis', desc: '13px / 16px / 500'},
23
+ {name: 'text-small-strong', class: 'text-small-strong', desc: '13px / 16px / 600'},
24
+ {name: 'text-tiny', class: 'text-tiny', desc: '11px / 12px / 400'},
25
+ {name: 'text-tiny-emphasis', class: 'text-tiny-emphasis', desc: '11px / 12px / 500'},
26
+ {name: 'text-tiny-strong', class: 'text-tiny-strong', desc: '11px / 12px / 600'},
27
+ {name: 'text-numeric font-mono', class: 'text-numeric font-mono', desc: '14px / 16px / 400 (mono)'},
28
+ ]
29
+
30
+ const textColors = [
31
+ {name: 'text-body', class: 'text-body'},
32
+ {name: 'text-secondary', class: 'text-secondary'},
33
+ {name: 'text-tertiary', class: 'text-tertiary'},
34
+ {name: 'text-primary', class: 'text-primary'},
35
+ {name: 'text-success', class: 'text-success'},
36
+ {name: 'text-warning', class: 'text-warning'},
37
+ {name: 'text-error', class: 'text-error'},
38
+ {name: 'text-info', class: 'text-info'},
39
+ ]
40
+ </script>
41
+
42
+ <div class="flex flex-col gap-48 p-24 text-body">
43
+ <section>
44
+ <h2 class="text-h2 mb-16">Font Sizes</h2>
45
+ <div class="flex flex-col gap-8">
46
+ {#each fontSizes as item (item.name)}
47
+ <div class="flex items-baseline gap-16 border-b border-primary py-8">
48
+ <span class="text-small text-secondary w-160 shrink-0 font-mono">{item.name}</span>
49
+ <span class={item.class}>The quick brown fox jumps over the lazy dog</span>
50
+ <span class="text-tiny text-tertiary ml-auto shrink-0">{item.desc}</span>
51
+ </div>
52
+ {/each}
53
+ </div>
54
+ </section>
55
+
56
+ <section>
57
+ <h2 class="text-h2 mb-16">Text Colors</h2>
58
+ <div class="flex flex-col gap-8">
59
+ {#each textColors as item (item.name)}
60
+ <div class="flex items-center gap-16 py-4">
61
+ <span class="text-small text-secondary w-160 shrink-0 font-mono">{item.name}</span>
62
+ <span class="{item.class} text-h4">{item.name}</span>
63
+ </div>
64
+ {/each}
65
+ </div>
66
+ </section>
67
+ </div>
@@ -0,0 +1,18 @@
1
+ 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> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ declare const Typography: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, {}, string>;
17
+ type Typography = InstanceType<typeof Typography>;
18
+ export default Typography;