@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.
- package/dist/IIActionGroup/IIActionGroup.svelte +11 -0
- package/dist/IIActionGroup/IIActionGroup.svelte.d.ts +6 -0
- package/dist/IIActionGroup/index.d.ts +1 -0
- package/dist/IIActionGroup/index.js +1 -0
- package/dist/IIAsyncState/IIAsyncState.svelte +50 -0
- package/dist/IIAsyncState/IIAsyncState.svelte.d.ts +15 -0
- package/dist/IIAsyncState/index.d.ts +1 -0
- package/dist/IIAsyncState/index.js +1 -0
- package/dist/IIAuditTrail/IIAuditTrail.svelte +167 -0
- package/dist/IIAuditTrail/IIAuditTrail.svelte.d.ts +13 -0
- package/dist/IIAuditTrail/IIAuditTrail.types.d.ts +14 -0
- package/dist/IIAuditTrail/IIAuditTrail.types.js +1 -0
- package/dist/IIAuditTrail/index.d.ts +2 -0
- package/dist/IIAuditTrail/index.js +1 -0
- package/dist/IIBadge/IIBadge.svelte +46 -0
- package/dist/IIBadge/IIBadge.svelte.d.ts +11 -0
- package/dist/IIBadge/IIBadge.types.d.ts +1 -0
- package/dist/IIBadge/IIBadge.types.js +1 -0
- package/dist/IIBadge/index.d.ts +2 -0
- package/dist/IIBadge/index.js +1 -0
- package/dist/IIButton/IIButton.svelte +103 -0
- package/dist/IIButton/IIButton.svelte.d.ts +23 -0
- package/dist/IIButton/index.d.ts +1 -0
- package/dist/IIButton/index.js +1 -0
- package/dist/IICheckbox/IICheckbox.svelte +66 -0
- package/dist/IICheckbox/IICheckbox.svelte.d.ts +16 -0
- package/dist/IICheckbox/index.d.ts +1 -0
- package/dist/IICheckbox/index.js +1 -0
- package/dist/IICheckboxList/IICheckboxList.svelte +15 -0
- package/dist/IICheckboxList/IICheckboxList.svelte.d.ts +7 -0
- package/dist/IICheckboxList/index.d.ts +1 -0
- package/dist/IICheckboxList/index.js +1 -0
- package/dist/IICombobox/IICombobox.svelte +158 -0
- package/dist/IICombobox/IICombobox.svelte.d.ts +39 -0
- package/dist/IICombobox/index.d.ts +1 -0
- package/dist/IICombobox/index.js +1 -0
- package/dist/IIDatePicker/IIDatePicker.svelte +107 -0
- package/dist/IIDatePicker/IIDatePicker.svelte.d.ts +9 -0
- package/dist/IIDatePicker/index.d.ts +1 -0
- package/dist/IIDatePicker/index.js +1 -0
- package/dist/IIDropdownInput/IIDropdownInput.svelte +76 -0
- package/dist/IIDropdownInput/IIDropdownInput.svelte.d.ts +15 -0
- package/dist/IIDropdownInput/index.d.ts +1 -0
- package/dist/IIDropdownInput/index.js +1 -0
- package/dist/IIDropdownMenu/IIDropdownMenu.svelte +74 -0
- package/dist/IIDropdownMenu/IIDropdownMenu.svelte.d.ts +19 -0
- package/dist/IIDropdownMenu/index.d.ts +1 -0
- package/dist/IIDropdownMenu/index.js +1 -0
- package/dist/IIEditableBadges/IIEditableBadges.svelte +91 -0
- package/dist/IIEditableBadges/IIEditableBadges.svelte.d.ts +17 -0
- package/dist/IIEditableBadges/index.d.ts +1 -0
- package/dist/IIEditableBadges/index.js +1 -0
- package/dist/IIEditableText/IIEditableText.svelte +143 -0
- package/dist/IIEditableText/IIEditableText.svelte.d.ts +12 -0
- package/dist/IIEditableText/index.d.ts +1 -0
- package/dist/IIEditableText/index.js +1 -0
- package/dist/IIEmptyState/IIEmptyState.svelte +29 -0
- package/dist/IIEmptyState/IIEmptyState.svelte.d.ts +9 -0
- package/dist/IIEmptyState/index.d.ts +1 -0
- package/dist/IIEmptyState/index.js +1 -0
- package/dist/IIFilterChip/IIFilterChip.svelte +47 -0
- package/dist/IIFilterChip/IIFilterChip.svelte.d.ts +9 -0
- package/dist/IIFilterChip/index.d.ts +1 -0
- package/dist/IIFilterChip/index.js +1 -0
- package/dist/IIFormField/IIFormField.svelte +18 -0
- package/dist/IIFormField/IIFormField.svelte.d.ts +9 -0
- package/dist/IIFormField/index.d.ts +1 -0
- package/dist/IIFormField/index.js +1 -0
- package/dist/IIInput/IIInput.svelte +69 -0
- package/dist/IIInput/IIInput.svelte.d.ts +15 -0
- package/dist/IIInput/index.d.ts +1 -0
- package/dist/IIInput/index.js +1 -0
- package/dist/IIModal/IIModal.svelte +76 -0
- package/dist/IIModal/IIModal.svelte.d.ts +15 -0
- package/dist/IIModal/index.d.ts +1 -0
- package/dist/IIModal/index.js +1 -0
- package/dist/IIOverflowActions/IIOverflowActions.svelte +104 -0
- package/dist/IIOverflowActions/IIOverflowActions.svelte.d.ts +16 -0
- package/dist/IIOverflowActions/index.d.ts +1 -0
- package/dist/IIOverflowActions/index.js +1 -0
- package/dist/IIStatusBadge/IIStatusBadge.svelte +29 -0
- package/dist/IIStatusBadge/IIStatusBadge.svelte.d.ts +9 -0
- package/dist/IIStatusBadge/index.d.ts +1 -0
- package/dist/IIStatusBadge/index.js +1 -0
- package/dist/IISwitch/IISwitch.svelte +60 -0
- package/dist/IISwitch/IISwitch.svelte.d.ts +15 -0
- package/dist/IISwitch/index.d.ts +1 -0
- package/dist/IISwitch/index.js +1 -0
- package/dist/IITable/IITable.svelte +17 -0
- package/dist/IITable/IITable.svelte.d.ts +8 -0
- package/dist/IITable/index.d.ts +1 -0
- package/dist/IITable/index.js +1 -0
- package/dist/IITableSkeleton/IITableSkeleton.svelte +32 -0
- package/dist/IITableSkeleton/IITableSkeleton.svelte.d.ts +8 -0
- package/dist/IITableSkeleton/index.d.ts +1 -0
- package/dist/IITableSkeleton/index.js +1 -0
- package/dist/IITabs/IITabs.svelte +139 -0
- package/dist/IITabs/IITabs.svelte.d.ts +19 -0
- package/dist/IITabs/index.d.ts +1 -0
- package/dist/IITabs/index.js +1 -0
- package/dist/IITaskCardSkeleton/IITaskCardSkeleton.svelte +15 -0
- package/dist/IITaskCardSkeleton/IITaskCardSkeleton.svelte.d.ts +26 -0
- package/dist/IITaskCardSkeleton/index.d.ts +1 -0
- package/dist/IITaskCardSkeleton/index.js +1 -0
- package/dist/IITextarea/IITextarea.svelte +79 -0
- package/dist/IITextarea/IITextarea.svelte.d.ts +15 -0
- package/dist/IITextarea/index.d.ts +1 -0
- package/dist/IITextarea/index.js +1 -0
- package/dist/IIToaster/IIToaster.svelte +5 -0
- package/dist/IIToaster/IIToaster.svelte.d.ts +18 -0
- package/dist/IIToaster/index.d.ts +1 -0
- package/dist/IIToaster/index.js +1 -0
- package/dist/IIViewFilterChip/IIViewFilterChip.svelte +37 -0
- package/dist/IIViewFilterChip/IIViewFilterChip.svelte.d.ts +8 -0
- package/dist/IIViewFilterChip/index.d.ts +1 -0
- package/dist/IIViewFilterChip/index.js +1 -0
- package/dist/Typography/Typography.svelte +67 -0
- package/dist/Typography/Typography.svelte.d.ts +18 -0
- package/dist/Typography/index.d.ts +1 -0
- package/dist/Typography/index.js +1 -0
- package/dist/icons.d.ts +92 -0
- package/dist/icons.js +104 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +35 -0
- package/dist/style/base.css +71 -0
- package/dist/style/colors.css +183 -0
- package/dist/style/global.css +2 -0
- package/dist/style/index.d.ts +1 -0
- package/dist/style/index.js +1 -0
- package/dist/style/tailwind/animations.js +89 -0
- package/dist/style/tailwind/colors.d.ts +217 -0
- package/dist/style/tailwind/colors.js +239 -0
- package/dist/style/tailwind/preset.js +103 -0
- package/dist/style/tailwind/radius.d.ts +1 -0
- package/dist/style/tailwind/radius.js +5 -0
- package/dist/style/tailwind/shadows.d.ts +15 -0
- package/dist/style/tailwind/shadows.js +27 -0
- package/dist/style/tailwind/spacing.d.ts +1 -0
- package/dist/style/tailwind/spacing.js +37 -0
- package/dist/style/tailwind/typography.d.ts +100 -0
- package/dist/style/tailwind/typography.js +39 -0
- package/dist/style/tailwind/z-index.d.ts +1 -0
- package/dist/style/tailwind/z-index.js +7 -0
- package/dist/toast.d.ts +16 -0
- package/dist/toast.js +24 -0
- package/dist/utils/cn.d.ts +2 -0
- package/dist/utils/cn.js +4 -0
- 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 @@
|
|
|
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,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 @@
|
|
|
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;
|