@awenovations/aura 0.0.18 → 0.0.20

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.
@@ -1,6 +1,14 @@
1
- <script>import { computePosition, autoUpdate } from "@floating-ui/dom";
1
+ <script>import {
2
+ computePosition,
3
+ autoUpdate,
4
+ offset as offsetMiddleware,
5
+ arrow as floatingArrow
6
+ } from "@floating-ui/dom";
2
7
  export let target;
3
8
  export let placement = "bottom";
9
+ export let offset = 0;
10
+ export let middleware = [];
11
+ export let onComputedPosition = void 0;
4
12
  let float;
5
13
  let cleanup;
6
14
  $: {
@@ -9,14 +17,21 @@ $: {
9
17
  cleanup = autoUpdate(target, float, () => {
10
18
  if (!target || !float) return;
11
19
  computePosition(target, float, {
12
- placement
13
- }).then(({ x, y }) => {
20
+ placement,
21
+ middleware: [offsetMiddleware(offset), ...middleware]
22
+ }).then(({ x, y, middlewareData, placemen }) => {
14
23
  if (float) {
15
24
  Object.assign(float.style, {
16
25
  left: `${x}px`,
17
26
  top: `${y}px`
18
27
  });
19
28
  }
29
+ onComputedPosition?.({
30
+ x,
31
+ y,
32
+ middlewareData,
33
+ placement
34
+ });
20
35
  });
21
36
  });
22
37
  }
@@ -1,9 +1,17 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import type { Placement } from '@floating-ui/dom';
2
+ import type { MiddlewareData, Placement } from '@floating-ui/dom';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  target: HTMLElement;
6
6
  placement?: Placement;
7
+ offset?: number;
8
+ middleware?: Array<MiddlewareData>;
9
+ onComputedPosition?: (computed: {
10
+ x: number;
11
+ y: number;
12
+ middlewareData: MiddlewareData;
13
+ placement: Placement;
14
+ }) => void;
7
15
  };
8
16
  events: {
9
17
  [evt: string]: CustomEvent<any>;
@@ -1 +1 @@
1
- {"lastGenerated":1723826974398,"icons":[{"name":"apple","size":"large"},{"name":"apple","size":"medium"},{"name":"apple","size":"small"},{"name":"arrow-circle-left","size":"large"},{"name":"arrow-circle-left","size":"medium"},{"name":"arrow-circle-left","size":"small"},{"name":"bug","size":"large"},{"name":"bug","size":"medium"},{"name":"bug","size":"small"},{"name":"caret-down","size":"large"},{"name":"caret-down","size":"medium"},{"name":"caret-down","size":"small"},{"name":"circle-plus","size":"large"},{"name":"circle-plus","size":"medium"},{"name":"circle-plus","size":"small"},{"name":"google-color","size":"large"},{"name":"google-color","size":"medium"},{"name":"google-color","size":"small"},{"name":"microsoft-color","size":"large"},{"name":"microsoft-color","size":"medium"},{"name":"microsoft-color","size":"small"},{"name":"plan","size":"large"},{"name":"plan","size":"medium"},{"name":"plan","size":"small"},{"name":"user-story","size":"large"},{"name":"user-story","size":"medium"},{"name":"user-story","size":"small"}]}
1
+ {"lastGenerated":1724117007152,"icons":[{"name":"apple","size":"large"},{"name":"apple","size":"medium"},{"name":"apple","size":"small"},{"name":"arrow-circle-left","size":"large"},{"name":"arrow-circle-left","size":"medium"},{"name":"arrow-circle-left","size":"small"},{"name":"bug","size":"large"},{"name":"bug","size":"medium"},{"name":"bug","size":"small"},{"name":"caret-down","size":"large"},{"name":"caret-down","size":"medium"},{"name":"caret-down","size":"small"},{"name":"circle-plus","size":"large"},{"name":"circle-plus","size":"medium"},{"name":"circle-plus","size":"small"},{"name":"google-color","size":"large"},{"name":"google-color","size":"medium"},{"name":"google-color","size":"small"},{"name":"microsoft-color","size":"large"},{"name":"microsoft-color","size":"medium"},{"name":"microsoft-color","size":"small"},{"name":"plan","size":"large"},{"name":"plan","size":"medium"},{"name":"plan","size":"small"},{"name":"user-story","size":"large"},{"name":"user-story","size":"medium"},{"name":"user-story","size":"small"}]}
@@ -1,8 +1,13 @@
1
1
  <script>import classNames from "classnames";
2
+ import { createEventDispatcher } from "svelte";
3
+ const dispatch = createEventDispatcher();
4
+ function forwardEvent(e) {
5
+ dispatch(e.type, e);
6
+ }
2
7
  export let href;
3
8
  </script>
4
9
 
5
- <a {href} {...$$props} class={classNames($$props.class, 'aura-link')}>
10
+ <a {href} {...$$props} class={classNames($$props.class, 'aura-link')} on:click={forwardEvent}>
6
11
  <slot />
7
12
  </a>
8
13
 
@@ -4,6 +4,10 @@ declare const __propDef: {
4
4
  href: string;
5
5
  };
6
6
  events: {
7
+ click: CustomEvent<Event & {
8
+ target: HTMLAnchorElement;
9
+ }>;
10
+ } & {
7
11
  [evt: string]: CustomEvent<any>;
8
12
  };
9
13
  slots: {
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Do not edit directly
3
- * Generated on Fri Aug 16 2024 16:56:26 GMT+0000 (Coordinated Universal Time)
3
+ * Generated on Tue Aug 20 2024 01:39:52 GMT+0000 (Coordinated Universal Time)
4
4
  */
5
5
 
6
6
  :root {
@@ -67,14 +67,7 @@
67
67
  --aura-link-color: #00a5f0ff;
68
68
  --aura-link-focused-decoration: underline;
69
69
  --aura-link-hovered-decoration: underline;
70
- --aura-tooltip-background: #ffffffff;
71
- --aura-tooltip-drop-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.10);
72
- --aura-tooltip-border: #c1c2c4ff;
73
- --aura-font-color: #1f1f1fff;
74
- --aura-tooltip-background: #a3a4a7ff;
75
- --aura-tooltip-drop-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.50);
76
- --aura-tooltip-border: #c1c2c4ff;
77
- --aura-font-color: #292c33ff;
70
+ --aura-tooltip-border-radius: 10px;
78
71
  --aura-divider-fill: #c1c2c4ff;
79
72
  --aura-divider-fill: #a3a4a7ff; --aura-light-primary-10: #f5e1e1ff;
80
73
  --aura-light-primary-20: #eecacaff;
@@ -132,7 +125,11 @@
132
125
  --aura-light-container-drop-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.10);
133
126
  --aura-light-container-background: #ffffffff;
134
127
  --aura-light-container-border-color: #c1c2c4ff;
135
- --aura-light-label-text-color: #292c33ff; --aura-dark-primary-70: #f5e1e1ff;
128
+ --aura-light-label-text-color: #292c33ff;
129
+ --aura-light-tooltip-background: #ffffffff;
130
+ --aura-light-tooltip-drop-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.10);
131
+ --aura-light-tooltip-border: #c1c2c4ff;
132
+ --aura-light-tooltip-font-color: #1f1f1fff; --aura-dark-primary-70: #f5e1e1ff;
136
133
  --aura-dark-primary-60: #eecacaff;
137
134
  --aura-dark-primary-50: #e6b3b3ff;
138
135
  --aura-dark-primary-40: #cd6868ff;
@@ -189,6 +186,10 @@
189
186
  --aura-dark-container-background: #474a50ff;
190
187
  --aura-dark-container-border-color: #66686dff;
191
188
  --aura-dark-label-text-color: #dfe0e1ff;
189
+ --aura-dark-tooltip-background: #a3a4a7ff;
190
+ --aura-dark-tooltip-drop-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.50);
191
+ --aura-dark-tooltip-border: #c1c2c4ff;
192
+ --aura-dark-tooltip-font-color: #292c33ff;
192
193
  }
193
194
 
194
195
  @media (prefers-color-scheme: light) {
@@ -250,6 +251,10 @@
250
251
  --aura-container-background: #ffffffff;
251
252
  --aura-container-border-color: #c1c2c4ff;
252
253
  --aura-label-text-color: #292c33ff;
254
+ --aura-tooltip-background: #ffffffff;
255
+ --aura-tooltip-drop-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.10);
256
+ --aura-tooltip-border: #c1c2c4ff;
257
+ --aura-tooltip-font-color: #1f1f1fff;
253
258
  }
254
259
  }
255
260
 
@@ -312,6 +317,10 @@
312
317
  --aura-container-background: #474a50ff;
313
318
  --aura-container-border-color: #66686dff;
314
319
  --aura-label-text-color: #dfe0e1ff;
320
+ --aura-tooltip-background: #a3a4a7ff;
321
+ --aura-tooltip-drop-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.50);
322
+ --aura-tooltip-border: #c1c2c4ff;
323
+ --aura-tooltip-font-color: #292c33ff;
315
324
  }
316
325
  }
317
326
 
@@ -373,6 +382,10 @@
373
382
  --aura-container-background: #ffffffff;
374
383
  --aura-container-border-color: #c1c2c4ff;
375
384
  --aura-label-text-color: #292c33ff;
385
+ --aura-tooltip-background: #ffffffff;
386
+ --aura-tooltip-drop-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.10);
387
+ --aura-tooltip-border: #c1c2c4ff;
388
+ --aura-tooltip-font-color: #1f1f1fff;
376
389
  }
377
390
 
378
391
  [data-theme="dark"] {
@@ -433,6 +446,10 @@
433
446
  --aura-container-background: #474a50ff;
434
447
  --aura-container-border-color: #66686dff;
435
448
  --aura-label-text-color: #dfe0e1ff;
449
+ --aura-tooltip-background: #a3a4a7ff;
450
+ --aura-tooltip-drop-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.50);
451
+ --aura-tooltip-border: #c1c2c4ff;
452
+ --aura-tooltip-font-color: #292c33ff;
436
453
  }
437
454
 
438
455
  /* http://meyerweb.com/eric/tools/css/reset/
@@ -0,0 +1,78 @@
1
+ <script context="module">import "../../app.scss";
2
+ import Tooltip from "./tooltip.svelte";
3
+ export const meta = {
4
+ title: "AURA/Tooltip",
5
+ component: Tooltip,
6
+ tags: ["autodocs"],
7
+ argTypes: {}
8
+ };
9
+ </script>
10
+
11
+ <script>import { Story, Template } from "@storybook/addon-svelte-csf";
12
+ </script>
13
+
14
+ <Template let:args>
15
+ <div class="tooltip-story">
16
+ <Tooltip content="Tooltip Content" forceOpen {...args}>
17
+ Tooltip Wrapped Element Line 1<br />
18
+ Tooltip Wrapped Element Line 2<br />
19
+ Tooltip Wrapped Element Line 3
20
+ </Tooltip>
21
+ </div>
22
+ </Template>
23
+ <Story name="All tooltips">
24
+ <div class="all-tooltips-story">
25
+ <div class="column">
26
+ <Tooltip content="Tooltip Content" forceOpen placement="left-start">Left start</Tooltip>
27
+ <Tooltip content="Tooltip Content" forceOpen placement="left">Left</Tooltip>
28
+ <Tooltip content="Tooltip Content" forceOpen placement="left-end">Left end</Tooltip>
29
+ <Tooltip content="Tooltip Content" forceOpen placement="bottom-start">Bottom start</Tooltip>
30
+ <Tooltip content="Tooltip Content" forceOpen placement="bottom">Bottom</Tooltip>
31
+ <Tooltip content="Tooltip Content" forceOpen placement="bottom-end">Bottom end</Tooltip>
32
+ </div>
33
+
34
+ <div class="column right">
35
+ <Tooltip content="Tooltip Content" forceOpen placement="top-start">Top start</Tooltip>
36
+ <Tooltip content="Tooltip Content" forceOpen placement="top">Top</Tooltip>
37
+ <Tooltip content="Tooltip Content" forceOpen placement="top-end">Top end</Tooltip>
38
+ <Tooltip content="Tooltip Content" forceOpen placement="right-start">Right start</Tooltip>
39
+ <Tooltip content="Tooltip Content" forceOpen placement="right">Right</Tooltip>
40
+ <Tooltip content="Tooltip Content" forceOpen placement="right-end">Right end</Tooltip>
41
+ </div>
42
+ </div>
43
+ </Story>
44
+
45
+ <Story name="Default tooltip" args={{ forceOpen: false }} />
46
+
47
+ <Story name="Bottom start tooltip" args={{ placement: 'bottom-start' }} />
48
+ <Story name="Bottom tooltip" args={{ placement: 'bottom' }} />
49
+ <Story name="Bottom end tooltip" args={{ placement: 'bottom-end' }} />
50
+ <Story name="Top start tooltip" args={{ placement: 'top-start' }} />
51
+ <Story name="Top tooltip" args={{ placement: 'top' }} />
52
+ <Story name="Top end tooltip" args={{ placement: 'top-end' }} />
53
+ <Story name="Left start tooltip" args={{ placement: 'left-start' }} />
54
+ <Story name="Left tooltip" args={{ placement: 'left' }} />
55
+ <Story name="Left end tooltip" args={{ placement: 'left-end' }} />
56
+ <Story name="Right start tooltip" args={{ placement: 'right-start' }} />
57
+ <Story name="Right tooltip" args={{ placement: 'right' }} />
58
+ <Story name="Right end tooltip" args={{ placement: 'right-end' }} />
59
+
60
+ <style>.tooltip-story {
61
+ height: 10rem;
62
+ justify-content: center;
63
+ display: flex;
64
+ align-items: center;
65
+ }
66
+
67
+ .all-tooltips-story {
68
+ display: flex;
69
+ gap: 6rem;
70
+ justify-content: center;
71
+ }
72
+ .all-tooltips-story .column {
73
+ margin: 4rem;
74
+ display: flex;
75
+ gap: 4rem;
76
+ flex-direction: column;
77
+ text-align: center;
78
+ }</style>
@@ -0,0 +1,23 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import '../../app.scss';
3
+ export declare const meta: {
4
+ title: string;
5
+ component: typeof Tooltip;
6
+ tags: string[];
7
+ argTypes: {};
8
+ };
9
+ declare const __propDef: {
10
+ props: Record<string, never>;
11
+ events: {
12
+ [evt: string]: CustomEvent<any>;
13
+ };
14
+ slots: {};
15
+ exports?: {} | undefined;
16
+ bindings?: string | undefined;
17
+ };
18
+ export type TooltipProps = typeof __propDef.props;
19
+ export type TooltipEvents = typeof __propDef.events;
20
+ export type TooltipSlots = typeof __propDef.slots;
21
+ export default class Tooltip extends SvelteComponent<TooltipProps, TooltipEvents, TooltipSlots> {
22
+ }
23
+ export {};
@@ -0,0 +1,176 @@
1
+ <script>import classNames from "classnames";
2
+ import Float from "../float/float.svelte";
3
+ import { arrow as floatingArrow } from "@floating-ui/dom";
4
+ export let content;
5
+ export let placement = "bottom";
6
+ export let offset = 10;
7
+ export let forceOpen = false;
8
+ let arrowPlacement = void 0;
9
+ let arrowSpacing = void 0;
10
+ $: show = false;
11
+ let target;
12
+ let arrow;
13
+ const toogleTooltip = () => {
14
+ show = !show;
15
+ };
16
+ const positionArrow = (event) => {
17
+ if (!event.middlewareData.arrow) return;
18
+ const { x: arrowX, y: arrowY } = event.middlewareData.arrow;
19
+ arrowPlacement = event.placement.split("-")[0];
20
+ arrowSpacing = event.placement.split("-")?.[1];
21
+ if (!arrow) return;
22
+ if (!arrowSpacing && arrowPlacement === "bottom" && arrowX !== null) {
23
+ Object.assign(arrow.style, {
24
+ left: `${arrowX}px`,
25
+ top: "-0.286rem",
26
+ right: "",
27
+ bottom: ""
28
+ });
29
+ }
30
+ if (arrowSpacing === "end" && arrowPlacement === "bottom" && arrowX !== null) {
31
+ Object.assign(arrow.style, {
32
+ left: "",
33
+ top: "-0.286rem",
34
+ right: "0.714rem",
35
+ bottom: ""
36
+ });
37
+ }
38
+ if (arrowSpacing === "start" && arrowPlacement === "bottom" && arrowX !== null) {
39
+ Object.assign(arrow.style, {
40
+ left: "0.714rem",
41
+ top: "-0.286rem",
42
+ right: "",
43
+ bottom: ""
44
+ });
45
+ }
46
+ if (!arrowSpacing && arrowPlacement === "top" && arrowX !== null) {
47
+ Object.assign(arrow.style, {
48
+ left: `${arrowX}px`,
49
+ top: "",
50
+ right: "",
51
+ bottom: "-0.286rem"
52
+ });
53
+ }
54
+ if (arrowSpacing === "end" && arrowPlacement === "top" && arrowX !== null) {
55
+ Object.assign(arrow.style, {
56
+ left: "",
57
+ top: "",
58
+ right: "0.714rem",
59
+ bottom: "-0.286rem"
60
+ });
61
+ }
62
+ if (arrowSpacing === "start" && arrowPlacement === "top" && arrowX !== null) {
63
+ Object.assign(arrow.style, {
64
+ left: "0.714rem",
65
+ top: "",
66
+ right: "",
67
+ bottom: "-0.286rem"
68
+ });
69
+ }
70
+ if (!arrowSpacing && arrowPlacement === "left" && arrowY !== null) {
71
+ Object.assign(arrow.style, {
72
+ left: "",
73
+ top: `${arrowY}px`,
74
+ right: "-0.286rem",
75
+ bottom: ""
76
+ });
77
+ }
78
+ if (arrowSpacing === "end" && arrowPlacement === "left" && arrowY !== null) {
79
+ Object.assign(arrow.style, {
80
+ left: "",
81
+ top: "",
82
+ right: "-0.357rem",
83
+ bottom: "0.714rem"
84
+ });
85
+ }
86
+ if (arrowSpacing === "start" && arrowPlacement === "left" && arrowY !== null) {
87
+ Object.assign(arrow.style, {
88
+ left: "",
89
+ top: "0.714rem",
90
+ right: "-0.357rem",
91
+ bottom: ""
92
+ });
93
+ }
94
+ if (!arrowSpacing && arrowPlacement === "right" && arrowY !== null) {
95
+ Object.assign(arrow.style, {
96
+ left: "-0.286rem",
97
+ top: `${arrowY}px`,
98
+ right: "",
99
+ bottom: ""
100
+ });
101
+ }
102
+ if (arrowSpacing === "end" && arrowPlacement === "right" && arrowY !== null) {
103
+ Object.assign(arrow.style, {
104
+ left: "-0.357rem",
105
+ top: "",
106
+ right: "",
107
+ bottom: "0.714rem"
108
+ });
109
+ }
110
+ if (arrowSpacing === "start" && arrowPlacement === "right" && arrowY !== null) {
111
+ Object.assign(arrow.style, {
112
+ left: "-0.357rem",
113
+ top: "0.714rem",
114
+ right: "",
115
+ bottom: ""
116
+ });
117
+ }
118
+ };
119
+ </script>
120
+
121
+ {#key show}
122
+ <Float
123
+ {target}
124
+ {offset}
125
+ {placement}
126
+ onComputedPosition={positionArrow}
127
+ middleware={[floatingArrow({ element: arrow })]}
128
+ >
129
+ <div hidden={!forceOpen && !show} class={classNames('aura-tooltip', arrowPlacement, arrowSpacing)}>
130
+ {content}
131
+
132
+ <div bind:this={arrow} class={classNames('arrow', arrowPlacement)} />
133
+ </div>
134
+ </Float>
135
+ {/key}
136
+
137
+ <span on:mouseleave={toogleTooltip} on:mouseenter={toogleTooltip} bind:this={target}><slot /></span>
138
+
139
+ <style>.aura-tooltip {
140
+ padding: 0.714rem;
141
+ border-radius: var(--aura-tooltip-border-radius);
142
+ border: 1px solid var(--aura-tooltip-border);
143
+ background: var(--aura-tooltip-background);
144
+ box-shadow: var(--aura-tooltip-drop-shadow);
145
+ pointer-events: none;
146
+ user-select: none;
147
+ color: var(--aura-tooltip-font-color);
148
+ }
149
+ .aura-tooltip.left.start, .aura-tooltip.right.start {
150
+ transform: translateY(-0.5rem);
151
+ }
152
+ .aura-tooltip.left.end, .aura-tooltip.right.end {
153
+ transform: translateY(0.5rem);
154
+ }
155
+
156
+ .arrow {
157
+ position: absolute;
158
+ background: var(--aura-tooltip-background);
159
+ border: 1px solid var(--aura-tooltip-border);
160
+ width: 0.571rem;
161
+ height: 0.571rem;
162
+ z-index: 10;
163
+ transform: rotate(45deg);
164
+ }
165
+ .arrow.left, .arrow.bottom {
166
+ border-bottom: 0;
167
+ }
168
+ .arrow.right, .arrow.bottom {
169
+ border-right: 0;
170
+ }
171
+ .arrow.right, .arrow.top {
172
+ border-top: 0;
173
+ }
174
+ .arrow.left, .arrow.top {
175
+ border-left: 0;
176
+ }</style>
@@ -0,0 +1,24 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import type { Placement } from '@floating-ui/dom';
3
+ declare const __propDef: {
4
+ props: {
5
+ content: string | HTMLElement;
6
+ placement?: Placement;
7
+ offset?: number;
8
+ forceOpen?: boolean;
9
+ };
10
+ events: {
11
+ [evt: string]: CustomEvent<any>;
12
+ };
13
+ slots: {
14
+ default: {};
15
+ };
16
+ exports?: {} | undefined;
17
+ bindings?: string | undefined;
18
+ };
19
+ export type TooltipProps = typeof __propDef.props;
20
+ export type TooltipEvents = typeof __propDef.events;
21
+ export type TooltipSlots = typeof __propDef.slots;
22
+ export default class Tooltip extends SvelteComponent<TooltipProps, TooltipEvents, TooltipSlots> {
23
+ }
24
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@awenovations/aura",
3
- "version": "0.0.18",
3
+ "version": "0.0.20",
4
4
  "scripts": {
5
5
  "dev": "vite dev",
6
6
  "build": "npm run transform-tokens && vite build && npm run package",
@@ -42,6 +42,7 @@
42
42
  "./alert.svelte": "./dist/alert/alert.svelte",
43
43
  "./link.svelte": "./dist/link/link.svelte",
44
44
  "./divider.svelte": "./dist/divider/divider.svelte",
45
+ "./tooltip.svelte": "./dist/tooltip/tooltip.svelte",
45
46
  "./toast.svelte": "./dist/toast/toast.svelte",
46
47
  "./toast.store": "./dist/toast/toast.store.js",
47
48
  "./dist/tokens/_variables.css": {