@marianmeres/stuic 1.47.0 → 1.49.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.
@@ -1,15 +1,8 @@
1
- <script>import { slide } from "svelte/transition";
1
+ <script context="module">import { slide } from "svelte/transition";
2
2
  import { twMerge } from "tailwind-merge";
3
- import { Thc, X } from "../../index.js";
4
- let _class = "";
5
- export { _class as class };
6
- export let classContent = "";
7
- export let classDismiss = "";
8
- export let duration = 150;
9
- export let message;
10
- export let onDismiss = () => message = null;
11
- export let theme = "primary";
12
- const preset = {
3
+ import { Thc, X, isTHCNotEmpty } from "../../index.js";
4
+ import { tick } from "svelte";
5
+ const themes = {
13
6
  primary: "bg-stuic-primary/10 text-stuic-primary dark:bg-stuic-primary dark:text-white/90",
14
7
  secondary: "bg-stuic-secondary/10 text-stuic-secondary dark:bg-stuic-secondary dark:text-white/90",
15
8
  slate: "bg-slate-100 text-slate-800 dark:bg-slate-700 dark:text-slate-100",
@@ -35,32 +28,69 @@ const preset = {
35
28
  pink: "bg-pink-100 text-pink-800 dark:bg-pink-800 dark:text-pink-100",
36
29
  rose: "bg-rose-100 text-rose-800 dark:bg-rose-800 dark:text-rose-100"
37
30
  };
31
+ export class DismissibleMessageConfig {
32
+ static preset = {
33
+ box: `mb-4 rounded flex text-sm`,
34
+ content: `flex-1 px-4 py-3`,
35
+ dismiss: `
36
+ hover:bg-black/5 dark:hover:bg-black/20
37
+ rounded rounded-l-none
38
+ px-3
39
+ flex items-center justify-center
40
+ group
41
+ `
42
+ };
43
+ static class = {
44
+ box: ``,
45
+ content: ``,
46
+ dismiss: ``
47
+ };
48
+ }
49
+ </script>
50
+
51
+ <script>let _class = "";
52
+ export { _class as class };
53
+ export let classContent = "";
54
+ export let classDismiss = "";
55
+ export let duration = 150;
56
+ export let message;
57
+ export let onDismiss = () => message = "";
58
+ export let theme = "primary";
59
+ let show = false;
60
+ $:
61
+ if (isTHCNotEmpty(message)) {
62
+ requestAnimationFrame(() => show = true);
63
+ }
38
64
  </script>
39
65
 
40
- {#if message}
66
+ <!-- {#if isNotEmpty(message)} -->
67
+ {#if show}
41
68
  <div
42
- class={twMerge(`
43
- mb-4 rounded flex
44
- text-sm
45
- ${preset[theme] ?? preset.primary}
46
- ${_class}
47
- `)}
69
+ class={twMerge(
70
+ DismissibleMessageConfig.preset.box,
71
+ DismissibleMessageConfig.class.box,
72
+ themes[theme] ?? themes.primary,
73
+ _class
74
+ )}
48
75
  transition:slide={{ duration }}
49
76
  >
50
- <div class={twMerge(`flex-1 px-4 py-3 ${classContent}`)}>
77
+ <div
78
+ class={twMerge(
79
+ DismissibleMessageConfig.preset.content,
80
+ DismissibleMessageConfig.class.content,
81
+ classContent
82
+ )}
83
+ >
51
84
  <Thc thc={message} />
52
85
  </div>
53
86
 
54
87
  {#if typeof onDismiss === 'function'}
55
88
  <button
56
- class={twMerge(`
57
- hover:bg-black/5 dark:hover:bg-black/20
58
- rounded rounded-l-none
59
- px-3
60
- flex items-center justify-center
61
- group
62
- ${classDismiss}
63
- `)}
89
+ class={twMerge(
90
+ DismissibleMessageConfig.preset.dismiss,
91
+ DismissibleMessageConfig.class.dismiss,
92
+ classDismiss
93
+ )}
64
94
  on:click={() => onDismiss()}
65
95
  >
66
96
  <X class="opacity-75 group-hover:opacity-100" strokeWidth={1.5} />
@@ -1,13 +1,25 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  import { type THC, type TW_COLORS } from '../../index.js';
3
+ export declare class DismissibleMessageConfig {
4
+ static preset: {
5
+ box: string;
6
+ content: string;
7
+ dismiss: string;
8
+ };
9
+ static class: {
10
+ box: string;
11
+ content: string;
12
+ dismiss: string;
13
+ };
14
+ }
3
15
  declare const __propDef: {
4
16
  props: {
5
17
  class?: string | undefined;
6
18
  classContent?: string | undefined;
7
19
  classDismiss?: string | undefined;
8
20
  duration?: number | undefined;
9
- message: THC | null;
10
- onDismiss?: (() => void) | null | undefined;
21
+ message: THC;
22
+ onDismiss?: false | (() => void) | null | undefined;
11
23
  theme?: "primary" | TW_COLORS | "secondary" | undefined;
12
24
  };
13
25
  events: {
@@ -1,4 +1,6 @@
1
- <script context="module"></script>
1
+ <script context="module">const _is = (m) => typeof m === "string" && m;
2
+ export const isTHCNotEmpty = (m) => _is(m) || _is(m?.text) || _is(m?.html) || m?.component;
3
+ </script>
2
4
 
3
5
  <script>export let forceAsHtml = false;
4
6
  export let thc;
@@ -10,6 +10,7 @@ interface WithHtml {
10
10
  html: string;
11
11
  }
12
12
  export type THC = string | WithText | WithHtml | WithComponent;
13
+ export declare const isTHCNotEmpty: (m: any) => any;
13
14
  declare const __propDef: {
14
15
  props: {
15
16
  [x: string]: any;
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ export { default as Button, ButtonConfig } from './components/Button/Button.svel
6
6
  export { default as SystemAwareColorScheme } from './components/ColorScheme/SystemAwareColorScheme.svelte';
7
7
  export { default as LocalColorScheme } from './components/ColorScheme/LocalColorScheme.svelte';
8
8
  export { ColorScheme } from './components/ColorScheme/color-scheme.js';
9
- export { default as DismissibleMessage } from './components/DismissibleMessage/DismissibleMessage.svelte';
9
+ export { default as DismissibleMessage, DismissibleMessageConfig, } from './components/DismissibleMessage/DismissibleMessage.svelte';
10
10
  export { default as Drawer, createDrawerStore } from './components/Drawer/Drawer.svelte';
11
11
  export { default as HoverExpandableWidth } from './components/HoverExpandableWidth/HoverExpandableWidth.svelte';
12
12
  export { default as Field } from './components/Input/Field.svelte';
@@ -18,7 +18,7 @@ export { createNotificationsStore, NOTIFICATION_EVENT, type NotiticationsCreateS
18
18
  export { default as Notifications, NotificationsConfig, } from './components/Notifications/Notifications.svelte';
19
19
  export { default as Popover } from './components/Popover/Popover.svelte';
20
20
  export { default as Switch, SwitchConfig } from './components/Switch/Switch.svelte';
21
- export { default as Thc, type THC } from './components/Thc/Thc.svelte';
21
+ export { default as Thc, type THC, isTHCNotEmpty } from './components/Thc/Thc.svelte';
22
22
  export { default as X } from './components/X/X.svelte';
23
23
  export { focusTrap } from './actions/focus-trap.js';
24
24
  export { onOutside } from './actions/on-outside.js';
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ export { default as SystemAwareColorScheme } from './components/ColorScheme/Syst
13
13
  export { default as LocalColorScheme } from './components/ColorScheme/LocalColorScheme.svelte';
14
14
  export { ColorScheme } from './components/ColorScheme/color-scheme.js';
15
15
  //
16
- export { default as DismissibleMessage } from './components/DismissibleMessage/DismissibleMessage.svelte';
16
+ export { default as DismissibleMessage, DismissibleMessageConfig, } from './components/DismissibleMessage/DismissibleMessage.svelte';
17
17
  //
18
18
  export { default as Drawer, createDrawerStore } from './components/Drawer/Drawer.svelte';
19
19
  //
@@ -31,7 +31,7 @@ export { default as Notifications, NotificationsConfig, } from './components/Not
31
31
  export { default as Popover } from './components/Popover/Popover.svelte';
32
32
  //
33
33
  export { default as Switch, SwitchConfig } from './components/Switch/Switch.svelte';
34
- export { default as Thc } from './components/Thc/Thc.svelte';
34
+ export { default as Thc, isTHCNotEmpty } from './components/Thc/Thc.svelte';
35
35
  //
36
36
  export { default as X } from './components/X/X.svelte';
37
37
  // actions
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marianmeres/stuic",
3
- "version": "1.47.0",
3
+ "version": "1.49.0",
4
4
  "scripts": {
5
5
  "dev": "vite dev",
6
6
  "build": "vite build && npm run package && node ./scripts/date.js",