lapikit 0.0.0-insiders.e330f8d → 0.0.0-insiders.efb49b7

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 (104) hide show
  1. package/dist/actions/index.d.ts +1 -0
  2. package/dist/actions/index.js +1 -0
  3. package/dist/assets/icons/arrow-down.svelte +10 -0
  4. package/dist/assets/icons/arrow-down.svelte.d.ts +26 -0
  5. package/dist/assets/icons/arrow-up.svelte +10 -0
  6. package/dist/assets/icons/arrow-up.svelte.d.ts +26 -0
  7. package/dist/assets/icons/close-fill.svelte +10 -0
  8. package/dist/assets/icons/close-fill.svelte.d.ts +26 -0
  9. package/dist/assets/icons/loading-fill.svelte +29 -0
  10. package/dist/assets/icons/loading-fill.svelte.d.ts +26 -0
  11. package/dist/components/accordion/accordion.css +113 -0
  12. package/dist/components/accordion/accordion.svelte +37 -0
  13. package/dist/components/accordion/accordion.svelte.d.ts +4 -0
  14. package/dist/components/accordion/accordion.svelte.js +24 -0
  15. package/dist/components/accordion/modules/accordion-item.svelte +94 -0
  16. package/dist/components/accordion/modules/accordion-item.svelte.d.ts +4 -0
  17. package/dist/components/accordion/types.d.ts +33 -0
  18. package/dist/components/accordion/types.js +1 -0
  19. package/dist/components/alert/alert.css +127 -0
  20. package/dist/components/alert/alert.svelte +89 -0
  21. package/dist/components/alert/alert.svelte.d.ts +4 -0
  22. package/dist/components/alert/types.d.ts +28 -0
  23. package/dist/components/alert/types.js +1 -0
  24. package/dist/components/app/app.css +16 -0
  25. package/dist/components/app/app.svelte +12 -1
  26. package/dist/components/aspect-ratio/aspect-ratio.css +19 -0
  27. package/dist/components/aspect-ratio/aspect-ratio.svelte +25 -0
  28. package/dist/components/aspect-ratio/aspect-ratio.svelte.d.ts +4 -0
  29. package/dist/components/aspect-ratio/types.d.ts +5 -0
  30. package/dist/components/aspect-ratio/types.js +1 -0
  31. package/dist/components/avatar/avatar.css +109 -0
  32. package/dist/components/avatar/avatar.svelte +46 -0
  33. package/dist/components/avatar/avatar.svelte.d.ts +4 -0
  34. package/dist/components/avatar/types.d.ts +22 -0
  35. package/dist/components/avatar/types.js +1 -0
  36. package/dist/components/button/button.css +44 -8
  37. package/dist/components/button/button.svelte +14 -1
  38. package/dist/components/button/types.d.ts +3 -0
  39. package/dist/components/chip/chip.css +17 -0
  40. package/dist/components/chip/chip.svelte +118 -0
  41. package/dist/components/chip/chip.svelte.d.ts +4 -0
  42. package/dist/components/chip/types.d.ts +30 -0
  43. package/dist/components/chip/types.js +1 -0
  44. package/dist/components/dialog/dialog.css +134 -0
  45. package/dist/components/dialog/dialog.svelte +67 -0
  46. package/dist/components/dialog/dialog.svelte.d.ts +4 -0
  47. package/dist/components/dialog/types.d.ts +24 -0
  48. package/dist/components/dialog/types.js +1 -0
  49. package/dist/components/dropdown/dropdown.css +22 -0
  50. package/dist/components/dropdown/dropdown.svelte +116 -0
  51. package/dist/components/dropdown/dropdown.svelte.d.ts +4 -0
  52. package/dist/components/dropdown/dropdown.svelte.js +148 -0
  53. package/dist/components/dropdown/types.d.ts +26 -0
  54. package/dist/components/dropdown/types.js +1 -0
  55. package/dist/components/icon/icon.css +76 -0
  56. package/dist/components/icon/icon.svelte +49 -0
  57. package/dist/components/icon/icon.svelte.d.ts +4 -0
  58. package/dist/components/icon/types.d.ts +16 -0
  59. package/dist/components/icon/types.js +1 -0
  60. package/dist/components/index.d.ts +14 -0
  61. package/dist/components/index.js +14 -0
  62. package/dist/components/list/list.css +195 -0
  63. package/dist/components/list/list.svelte +46 -0
  64. package/dist/components/list/list.svelte.d.ts +4 -0
  65. package/dist/components/list/modules/list-item.svelte +68 -0
  66. package/dist/components/list/modules/list-item.svelte.d.ts +4 -0
  67. package/dist/components/list/types.d.ts +36 -0
  68. package/dist/components/list/types.js +1 -0
  69. package/dist/components/modal/modal.css +140 -0
  70. package/dist/components/modal/modal.svelte +112 -0
  71. package/dist/components/modal/modal.svelte.d.ts +4 -0
  72. package/dist/components/modal/types.d.ts +26 -0
  73. package/dist/components/modal/types.js +1 -0
  74. package/dist/components/popover/popover.css +22 -0
  75. package/dist/components/popover/popover.svelte +73 -0
  76. package/dist/components/popover/popover.svelte.d.ts +4 -0
  77. package/dist/components/popover/popover.svelte.js +134 -0
  78. package/dist/components/popover/types.d.ts +20 -0
  79. package/dist/components/popover/types.js +1 -0
  80. package/dist/components/separator/separator.css +46 -0
  81. package/dist/components/separator/separator.svelte +37 -0
  82. package/dist/components/separator/separator.svelte.d.ts +4 -0
  83. package/dist/components/separator/types.d.ts +11 -0
  84. package/dist/components/separator/types.js +1 -0
  85. package/dist/components/tooltip/tooltip.css +124 -0
  86. package/dist/components/tooltip/tooltip.svelte +113 -0
  87. package/dist/components/tooltip/tooltip.svelte.d.ts +4 -0
  88. package/dist/components/tooltip/tooltip.svelte.js +131 -0
  89. package/dist/components/tooltip/types.d.ts +23 -0
  90. package/dist/components/tooltip/types.js +1 -0
  91. package/dist/internal/assets.svelte.d.ts +1 -0
  92. package/dist/internal/assets.svelte.js +11 -0
  93. package/dist/internal/clickOutside.d.ts +9 -0
  94. package/dist/internal/clickOutside.js +34 -0
  95. package/dist/internal/index.d.ts +1 -0
  96. package/dist/internal/index.js +1 -0
  97. package/dist/internal/scroll.d.ts +1 -0
  98. package/dist/internal/scroll.js +6 -0
  99. package/dist/stores/index.d.ts +5 -0
  100. package/dist/stores/index.js +21 -2
  101. package/dist/style/animation.css +9 -0
  102. package/dist/style/css.js +3 -0
  103. package/dist/style/variable.css +12 -0
  104. package/package.json +6 -2
@@ -0,0 +1,124 @@
1
+ .kit-tooltip {
2
+ inset: 0px auto auto 0px;
3
+ margin: 0px;
4
+ position: fixed;
5
+ z-index: 2000;
6
+ }
7
+
8
+ .kit-tooltip-content {
9
+ --tooltip-color: var(--on, var(--kit-on-neutral));
10
+ --tooltip-background: var(--base, var(--kit-neutral));
11
+ --tooltip-radius: var(--shape, var(--kit-radius-md));
12
+
13
+ background-color: var(--tooltip-background);
14
+ color: var(--tooltip-color);
15
+ border-radius: var(--tooltip-radius);
16
+ border: 1px solid var(--tooltip-background);
17
+ font-size: 0.875rem;
18
+ display: inline-block;
19
+ width: auto;
20
+ pointer-events: none;
21
+ overflow-wrap: break-word;
22
+ transition:
23
+ color 0.5s,
24
+ border-color 0.5s,
25
+ background-color 0.5s;
26
+ box-shadow: 0px 16px 29px -10px color-mix(in oklab, var(--kit-scrim) 60%, transparent);
27
+ }
28
+
29
+ /* density */
30
+ .kit-tooltip-content[breakpoint]kit-tooltip-content--density-default {
31
+ padding: 0.15rem 0.625rem;
32
+ }
33
+
34
+ .kit-tooltip-content[breakpoint]kit-tooltip-content--density-compact {
35
+ padding: 0.125rem 0.5rem;
36
+ }
37
+
38
+ .kit-tooltip-content[breakpoint]kit-tooltip-content--density-comfortable {
39
+ padding: 0.35rem 0.75rem;
40
+ }
41
+
42
+ .kit-tooltip-content--arrow::after {
43
+ content: ' ';
44
+ position: absolute;
45
+ border-style: solid;
46
+ }
47
+
48
+ .kit-tooltip-content--arrow.kit-tooltip-content--bottom::after,
49
+ .kit-tooltip-content--arrow.kit-tooltip-content--top::after {
50
+ left: 50%;
51
+ margin-left: -0.35rem;
52
+ border-width: 0.35rem;
53
+ }
54
+
55
+ .kit-tooltip-content--arrow.kit-tooltip-content--bottom::after {
56
+ bottom: 100%;
57
+ border-color: transparent transparent var(--tooltip-background) transparent;
58
+ }
59
+
60
+ .kit-tooltip-content--arrow.kit-tooltip-content--top::after {
61
+ top: 100%;
62
+ border-color: var(--tooltip-background) transparent transparent transparent;
63
+ }
64
+
65
+ .kit-tooltip-content--arrow.kit-tooltip-content--left::after,
66
+ .kit-tooltip-content--arrow.kit-tooltip-content--right::after {
67
+ top: 50%;
68
+ margin-top: -0.35rem;
69
+ border-width: 0.35rem;
70
+ }
71
+
72
+ .kit-tooltip-content--arrow.kit-tooltip-content--right::after {
73
+ right: 100%;
74
+ border-color: transparent var(--tooltip-background) transparent transparent;
75
+ }
76
+
77
+ .kit-tooltip-content--arrow.kit-tooltip-content--left::after {
78
+ left: 100%;
79
+ border-color: transparent transparent transparent var(--tooltip-background);
80
+ }
81
+
82
+ .kit-tooltip-content--top,
83
+ .kit-tooltip-content--bottom,
84
+ .kit-tooltip-content--right,
85
+ .kit-tooltip-content--left {
86
+ animation-duration: 150ms;
87
+ animation-name: enter;
88
+ }
89
+
90
+ .kit-tooltip-content--top {
91
+ --animate-enter-pos1: 0;
92
+ --animate-enter-pos2: 0.5rem;
93
+ --animate-enter-pos3: 0;
94
+ }
95
+
96
+ .kit-tooltip-content--bottom {
97
+ --animate-enter-pos1: 0;
98
+ --animate-enter-pos2: -0.5rem;
99
+ --animate-enter-pos3: 0;
100
+ }
101
+
102
+ .kit-tooltip-content--right {
103
+ --animate-enter-pos1: -0.5rem;
104
+ --animate-enter-pos2: 0;
105
+ --animate-enter-pos3: 0;
106
+ }
107
+
108
+ .kit-tooltip-content--left {
109
+ --animate-enter-pos1: 0.5rem;
110
+ --animate-enter-pos2: 0;
111
+ --animate-enter-pos3: 0;
112
+ }
113
+
114
+ @keyframes enter {
115
+ 0% {
116
+ opacity: 0;
117
+ transform: translate3d(
118
+ var(--animate-enter-pos1),
119
+ var(--animate-enter-pos2),
120
+ var(--animate-enter-pos3)
121
+ )
122
+ scale3d(0.95, 0.95, 0.95) rotate(0);
123
+ }
124
+ }
@@ -0,0 +1,113 @@
1
+ <script lang="ts">
2
+ import { getAssets } from '../../internal/assets.svelte.js';
3
+ import { getPositionsTooltip } from './tooltip.svelte.js';
4
+ import type { PositionElement, TooltipProps } from './types.js';
5
+
6
+ let {
7
+ children,
8
+ tooltip,
9
+ open = $bindable(),
10
+ label,
11
+ dark,
12
+ light,
13
+ rounded,
14
+ color,
15
+ background,
16
+ location = 'bottom',
17
+ delayDuration = 850,
18
+ density = 'default',
19
+ variant,
20
+ disabled,
21
+ avoidCollisions = true,
22
+ forceMount,
23
+ ...rest
24
+ }: TooltipProps = $props();
25
+
26
+ const positionAxis = getPositionsTooltip();
27
+ const assets = getAssets();
28
+
29
+ let ref: HTMLElement | null = $state(null);
30
+ let refTooltip: HTMLElement | null = $state(null);
31
+ let timer: ReturnType<typeof setTimeout> | null = $state(null);
32
+ let axis: PositionElement = $state({ x: 0, y: 0, location: null });
33
+ let innerHeight = $state(0);
34
+ let innerWidth = $state(0);
35
+ let scrollX = $state(0);
36
+ let scrollY = $state(0);
37
+
38
+ axis = positionAxis?.values;
39
+
40
+ $effect(() => {
41
+ if (
42
+ open &&
43
+ ref &&
44
+ refTooltip &&
45
+ (scrollX > 0 || scrollY > 0 || innerHeight > 0 || innerWidth > 0)
46
+ ) {
47
+ positionAxis.update(ref, refTooltip, location, true, avoidCollisions);
48
+ }
49
+ });
50
+
51
+ $effect(() => {
52
+ if (tooltip) forceMount = true;
53
+ });
54
+
55
+ const handleMouse = (state: string) => {
56
+ if (disabled) return (open = false);
57
+ if (state === 'enter') {
58
+ timer = setTimeout(() => {
59
+ open = true;
60
+ }, delayDuration);
61
+ } else if (state === 'leave') {
62
+ if (timer) {
63
+ clearTimeout(timer);
64
+ timer = null;
65
+ }
66
+ open = false;
67
+ }
68
+ };
69
+ </script>
70
+
71
+ <svelte:window bind:innerHeight bind:innerWidth bind:scrollX bind:scrollY />
72
+
73
+ <!-- svelte-ignore a11y_no_static_element_interactions -->
74
+ <span
75
+ bind:this={ref}
76
+ onmouseenter={() => handleMouse('enter')}
77
+ onmouseleave={() => handleMouse('leave')}
78
+ style:display="inline-flex"
79
+ >
80
+ {@render children?.()}
81
+ </span>
82
+
83
+ {#if open || forceMount}
84
+ <div
85
+ bind:this={refTooltip}
86
+ class={['kit-tooltip']}
87
+ role="tooltip"
88
+ aria-label={label}
89
+ style={`transform: translate(${axis.x}px, ${axis.y}px);display: ${open ? 'initial' : 'none'}`}
90
+ >
91
+ <div
92
+ class={[
93
+ 'kit-tooltip-content animate-in',
94
+ light && 'light',
95
+ dark && 'dark',
96
+ rounded && assets.shape(rounded),
97
+ axis?.location && `kit-tooltip-content--${axis?.location}`,
98
+ variant && `kit-tooltip-content--${variant}`,
99
+ density && assets.className('tooltip-content', 'density', density),
100
+ rest.class
101
+ ]}
102
+ style:--base={assets.color(background)}
103
+ style:--on={assets.color(color)}
104
+ style:--shape={assets.shape(rounded)}
105
+ >
106
+ {#if tooltip}
107
+ {@render tooltip?.()}
108
+ {:else}
109
+ {label}
110
+ {/if}
111
+ </div>
112
+ </div>
113
+ {/if}
@@ -0,0 +1,4 @@
1
+ import type { TooltipProps } from './types.js';
2
+ declare const Tooltip: import("svelte").Component<TooltipProps, {}, "open">;
3
+ type Tooltip = ReturnType<typeof Tooltip>;
4
+ export default Tooltip;
@@ -0,0 +1,131 @@
1
+ import { innerWidth, innerHeight } from 'svelte/reactivity/window';
2
+ export function getPositionsTooltip() {
3
+ // state
4
+ const axis = $state({
5
+ x: 0,
6
+ y: 0,
7
+ location: null
8
+ });
9
+ return {
10
+ get values() {
11
+ return axis;
12
+ },
13
+ update(activator, element, location, centered, avoidCollisions) {
14
+ if (!activator || !element)
15
+ return;
16
+ const elementRect = element.getBoundingClientRect();
17
+ const activatorRect = activator.getBoundingClientRect();
18
+ const spacing = 6;
19
+ if (location === 'top' || location === 'bottom') {
20
+ if (avoidCollisions) {
21
+ if (location === 'top') {
22
+ if (activatorRect.y - (elementRect.height + spacing) < 0) {
23
+ axis.y = activatorRect.bottom + spacing;
24
+ axis.location = 'bottom';
25
+ }
26
+ else {
27
+ axis.y = activatorRect.top - (elementRect.height + spacing);
28
+ axis.location = 'top';
29
+ }
30
+ }
31
+ else {
32
+ if (activatorRect.y + activatorRect.height + (elementRect.height + spacing) >
33
+ innerHeight.current) {
34
+ axis.y = activatorRect.top - (elementRect.height + spacing);
35
+ axis.location = 'top';
36
+ }
37
+ else {
38
+ axis.y = activatorRect.bottom + spacing;
39
+ axis.location = 'bottom';
40
+ }
41
+ }
42
+ }
43
+ else {
44
+ if (location === 'top') {
45
+ axis.y = activatorRect.top - (elementRect.height + spacing);
46
+ axis.location = 'top';
47
+ }
48
+ else {
49
+ axis.y = activatorRect.bottom + spacing;
50
+ axis.location = 'bottom';
51
+ }
52
+ }
53
+ if (centered &&
54
+ activatorRect.left - (elementRect.width - activatorRect.width) / 2 > 0 &&
55
+ activatorRect.left + elementRect.width < innerWidth.current) {
56
+ axis.x = activatorRect.left - (elementRect.width - activatorRect.width) / 2;
57
+ }
58
+ else if (activatorRect.left + elementRect.width > innerWidth.current) {
59
+ axis.x = activatorRect.left - (elementRect.width - activatorRect.width);
60
+ }
61
+ else {
62
+ axis.x = activatorRect.left;
63
+ }
64
+ }
65
+ else if (location === 'left' || location === 'right') {
66
+ if (avoidCollisions) {
67
+ if (location === 'left' && !(activatorRect.left - elementRect.width < 0)) {
68
+ axis.x = activatorRect.left - (elementRect.width + spacing);
69
+ axis.location = 'left';
70
+ }
71
+ else {
72
+ if (activatorRect.left + activatorRect.width + elementRect.width + spacing >
73
+ innerWidth.current) {
74
+ axis.x = activatorRect.left - (elementRect.width + spacing);
75
+ axis.location = 'left';
76
+ }
77
+ else {
78
+ axis.x = activatorRect.left + activatorRect.width + spacing;
79
+ axis.location = 'right';
80
+ }
81
+ }
82
+ }
83
+ else {
84
+ if (location === 'left') {
85
+ axis.x = activatorRect.left - (elementRect.width + spacing);
86
+ axis.location = 'left';
87
+ }
88
+ else {
89
+ axis.x = activatorRect.left + activatorRect.width + spacing;
90
+ axis.location = 'right';
91
+ }
92
+ }
93
+ if (centered &&
94
+ activatorRect.top - (elementRect.height - activatorRect.height) / 2 > 0 &&
95
+ activatorRect.top + elementRect.height < innerHeight.current) {
96
+ axis.y = activatorRect.top - (elementRect.height - activatorRect.height) / 2;
97
+ }
98
+ else if (activatorRect.y + elementRect.height > innerHeight.current) {
99
+ axis.y = activatorRect.y - elementRect.height + activatorRect.height;
100
+ }
101
+ else {
102
+ axis.y = activatorRect.y;
103
+ }
104
+ }
105
+ else {
106
+ if (centered &&
107
+ activatorRect.left - (elementRect.width - activatorRect.width) / 2 > 0 &&
108
+ activatorRect.left + elementRect.width < innerWidth.current) {
109
+ axis.x = activatorRect.left - (elementRect.width - activatorRect.width) / 2;
110
+ }
111
+ else if (activatorRect.left + elementRect.width > innerWidth.current) {
112
+ axis.x = activatorRect.left - (elementRect.width - activatorRect.width);
113
+ }
114
+ else {
115
+ axis.x = activatorRect.left;
116
+ }
117
+ if (centered &&
118
+ activatorRect.top - (elementRect.height - activatorRect.height) / 2 > 0 &&
119
+ activatorRect.top + elementRect.height < innerHeight.current) {
120
+ axis.y = activatorRect.top - (elementRect.height - activatorRect.height) / 2;
121
+ }
122
+ else if (activatorRect.bottom + elementRect.height > innerHeight.current) {
123
+ axis.y = activatorRect.top - elementRect.height;
124
+ }
125
+ else {
126
+ axis.y = activatorRect.bottom;
127
+ }
128
+ }
129
+ }
130
+ };
131
+ }
@@ -0,0 +1,23 @@
1
+ import type { Component } from '../../internal/types.js';
2
+ import type { Snippet } from 'svelte';
3
+ export interface TooltipProps extends Component {
4
+ open?: boolean;
5
+ dark?: boolean;
6
+ light?: boolean;
7
+ rounded?: string;
8
+ label?: string;
9
+ location?: 'top' | 'bottom' | 'left' | 'right';
10
+ color?: string;
11
+ background?: string;
12
+ delayDuration?: number;
13
+ variant?: 'arrow';
14
+ density?: 'compact' | 'comfortable' | 'default';
15
+ disabled?: boolean;
16
+ avoidCollisions?: boolean;
17
+ tooltip?: Snippet;
18
+ }
19
+ export type PositionElement = {
20
+ x: number;
21
+ y: number;
22
+ location: string | null;
23
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -4,4 +4,5 @@ export declare function getAssets(): {
4
4
  [key: string]: string;
5
5
  }): string | undefined;
6
6
  color(color?: string): string | undefined;
7
+ unit(value?: string | number): string | undefined;
7
8
  };
@@ -36,6 +36,17 @@ export function getAssets() {
36
36
  return color;
37
37
  return `var(--kit-${color})`;
38
38
  }
39
+ },
40
+ unit(value) {
41
+ if (typeof value === 'number')
42
+ return `${value}px`;
43
+ if (typeof value === 'string') {
44
+ const cleaned = value.trim();
45
+ const isOnlyNumericLike = /^[\d.,]+$/.test(cleaned);
46
+ if (isOnlyNumericLike)
47
+ return `${value}px`;
48
+ }
49
+ return value;
39
50
  }
40
51
  };
41
52
  }
@@ -0,0 +1,9 @@
1
+ type ClickOutsideOptions = {
2
+ exclude?: (HTMLElement | PointerEvent | null)[];
3
+ onClose: () => void;
4
+ };
5
+ export declare function clickOutside(node: HTMLElement, options: ClickOutsideOptions): {
6
+ update(newOptions: ClickOutsideOptions): void;
7
+ destroy(): void;
8
+ };
9
+ export {};
@@ -0,0 +1,34 @@
1
+ export function clickOutside(node, options) {
2
+ let { exclude = [], onClose } = options;
3
+ function isTargetExcluded(target) {
4
+ return exclude.some((ex) => {
5
+ if (!ex)
6
+ return false;
7
+ if (ex instanceof HTMLElement) {
8
+ return ex.contains(target);
9
+ }
10
+ if (ex instanceof PointerEvent && ex.target instanceof Node) {
11
+ return ex.target.contains(target);
12
+ }
13
+ return false;
14
+ });
15
+ }
16
+ const handleClick = (event) => {
17
+ const target = event.target;
18
+ const isExcluded = isTargetExcluded(target);
19
+ const isInside = node.contains(target);
20
+ if (!isInside && !isExcluded) {
21
+ onClose();
22
+ }
23
+ };
24
+ document.addEventListener('click', handleClick, true);
25
+ return {
26
+ update(newOptions) {
27
+ exclude = newOptions.exclude || [];
28
+ onClose = newOptions.onClose;
29
+ },
30
+ destroy() {
31
+ document.removeEventListener('click', handleClick, true);
32
+ }
33
+ };
34
+ }
@@ -1,3 +1,4 @@
1
1
  export * from './terminal.js';
2
2
  export * from './ansi.js';
3
3
  export * from './assets.svelte.js';
4
+ export * from './scroll.js';
@@ -1,3 +1,4 @@
1
1
  export * from './terminal.js';
2
2
  export * from './ansi.js';
3
3
  export * from './assets.svelte.js';
4
+ export * from './scroll.js';
@@ -0,0 +1 @@
1
+ export declare function disabledScroll(state: boolean): void;
@@ -0,0 +1,6 @@
1
+ import { BROWSER } from 'esm-env';
2
+ export function disabledScroll(state) {
3
+ if (BROWSER) {
4
+ document.body.style.overflow = state ? 'hidden' : '';
5
+ }
6
+ }
@@ -1,4 +1,9 @@
1
1
  import { type Writable } from 'svelte/store';
2
2
  export declare const colorScheme: Writable<'auto' | 'dark' | 'light'>;
3
+ export declare const modalOpen: Writable<boolean | 'persistent'>;
4
+ export declare const modalStack: Writable<string[]>;
3
5
  export declare function updateThemeStore(update: 'auto' | 'dark' | 'light'): void;
4
6
  export declare function setColorScheme(scheme: 'auto' | 'dark' | 'light'): void;
7
+ export declare function setOpenModal(state: boolean | 'persistent'): void;
8
+ export declare const pushModal: (id: string) => void;
9
+ export declare const popModal: (id: string) => void;
@@ -1,8 +1,11 @@
1
1
  import { writable } from 'svelte/store';
2
2
  // states
3
- const _default = 'light';
3
+ const colorScheme_default = 'light';
4
+ const modalOpen_default = false;
4
5
  const isBrowser = typeof window !== 'undefined';
5
- export const colorScheme = writable(_default);
6
+ export const colorScheme = writable(colorScheme_default);
7
+ export const modalOpen = writable(modalOpen_default);
8
+ export const modalStack = writable([]);
6
9
  export function updateThemeStore(update) {
7
10
  colorScheme.update(() => {
8
11
  if (isBrowser) {
@@ -21,3 +24,19 @@ export function updateThemeStore(update) {
21
24
  export function setColorScheme(scheme) {
22
25
  updateThemeStore(scheme);
23
26
  }
27
+ export function setOpenModal(state) {
28
+ modalOpen.set(state);
29
+ }
30
+ export const pushModal = (id) => {
31
+ modalStack.update((stack) => {
32
+ if (!stack.includes(id))
33
+ return [...stack, id];
34
+ return stack;
35
+ });
36
+ };
37
+ export const popModal = (id) => {
38
+ modalStack.update((stack) => {
39
+ const newStack = stack.filter((m) => m !== id);
40
+ return newStack.length === 0 ? [] : newStack;
41
+ });
42
+ };
@@ -9,3 +9,12 @@
9
9
  transform: scale(1);
10
10
  }
11
11
  }
12
+
13
+ @keyframes icon-rotate {
14
+ 0% {
15
+ transform: rotate(10deg);
16
+ }
17
+ 100% {
18
+ transform: rotate(380deg);
19
+ }
20
+ }
package/dist/style/css.js CHANGED
@@ -11,6 +11,7 @@ const __dirname = dirname(__filename);
11
11
  export const processCSS = async (config) => {
12
12
  const _normalize = fs.readFileSync(path.resolve(__dirname, './normalize.css'), 'utf-8');
13
13
  const _animation = fs.readFileSync(path.resolve(__dirname, './animation.css'), 'utf-8');
14
+ const _variables = fs.readFileSync(path.resolve(__dirname, './variable.css'), 'utf-8');
14
15
  let styles = ``;
15
16
  if (config.options.normalize)
16
17
  styles += `${_normalize}\n`;
@@ -19,6 +20,8 @@ export const processCSS = async (config) => {
19
20
  const variablesStyles = variables(config);
20
21
  styles += `${colorScheme.root}\n`;
21
22
  styles += `${variablesStyles}\n`;
23
+ styles += `${variablesStyles}\n`;
24
+ styles += `${_variables}\n`;
22
25
  styles += `${colorScheme.className}\n`;
23
26
  styles += `${deviceDisplay}\n`;
24
27
  styles += component(config);
@@ -0,0 +1,12 @@
1
+ :root {
2
+ --kit-dialog-size-xs: 18.75rem;
3
+ --kit-dialog-size-sm: 25rem;
4
+ --kit-dialog-size-md: 37.5rem;
5
+ --kit-dialog-size-lg: 53.125rem;
6
+ --kit-dialog-size-xl: 75rem;
7
+ --kit-modal-size-xs: 18.75rem;
8
+ --kit-modal-size-sm: 25rem;
9
+ --kit-modal-size-md: 37.5rem;
10
+ --kit-modal-size-lg: 53.125rem;
11
+ --kit-modal-size-xl: 75rem;
12
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lapikit",
3
- "version": "0.0.0-insiders.e330f8d",
3
+ "version": "0.0.0-insiders.efb49b7",
4
4
  "license": "MIT",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -42,7 +42,8 @@
42
42
  "type": "module",
43
43
  "exports": {
44
44
  ".": {
45
- "types": "./dist/index.d.ts"
45
+ "types": "./dist/index.d.ts",
46
+ "svelte": "./dist/index.js"
46
47
  },
47
48
  "./components": {
48
49
  "svelte": "./dist/components/index.js",
@@ -54,6 +55,9 @@
54
55
  "./stores": {
55
56
  "default": "./dist/stores/index.js"
56
57
  },
58
+ "./actions": {
59
+ "default": "./dist/actions/index.js"
60
+ },
57
61
  "./css": "./dist/styles.css"
58
62
  },
59
63
  "peerDependencies": {