sveltacular 0.0.48 → 0.0.50

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 (128) hide show
  1. package/README.md +31 -31
  2. package/dist/forms/bool-box/bool-box.svelte +3 -3
  3. package/dist/forms/button/button.svelte +7 -7
  4. package/dist/forms/check-box/check-box-group.svelte +14 -14
  5. package/dist/forms/check-box/check-box.svelte +23 -23
  6. package/dist/forms/combo/new-or-existing-combo.svelte +56 -56
  7. package/dist/forms/date-box/date-box.svelte +19 -19
  8. package/dist/forms/file-area/file-area.svelte +31 -31
  9. package/dist/forms/file-box/file-box.svelte +23 -23
  10. package/dist/forms/form-field.svelte +7 -7
  11. package/dist/forms/form-footer.svelte +15 -15
  12. package/dist/forms/form-header.svelte +9 -9
  13. package/dist/forms/form-label.svelte +5 -5
  14. package/dist/forms/form-section.svelte +14 -14
  15. package/dist/forms/form.svelte +7 -7
  16. package/dist/forms/info-box/info-box.svelte +19 -19
  17. package/dist/forms/list-box/list-box.svelte +45 -45
  18. package/dist/forms/list-box/list-box.svelte.d.ts +2 -2
  19. package/dist/forms/money-box/money-box.svelte +5 -5
  20. package/dist/forms/number-box/number-box.svelte +29 -29
  21. package/dist/forms/phone-box/phone-box.svelte +50 -50
  22. package/dist/forms/radio-group/radio-box.svelte +15 -15
  23. package/dist/forms/radio-group/radio-group.svelte +12 -12
  24. package/dist/forms/switch-box/switch-box.svelte +16 -16
  25. package/dist/forms/text-area/text-area.svelte +10 -10
  26. package/dist/forms/text-box/text-box.svelte +34 -34
  27. package/dist/forms/url-box/url-box.svelte +14 -14
  28. package/dist/generic/address/address.svelte +40 -0
  29. package/dist/generic/address/address.svelte.d.ts +20 -0
  30. package/dist/generic/card/card-container.svelte +7 -7
  31. package/dist/generic/card/card.svelte +10 -10
  32. package/dist/generic/date/date-time.svelte +3 -3
  33. package/dist/generic/divider/divider.svelte +3 -3
  34. package/dist/generic/dot/dot.svelte +5 -5
  35. package/dist/generic/email/email.svelte +30 -0
  36. package/dist/generic/email/email.svelte.d.ts +16 -0
  37. package/dist/generic/empty/empty.svelte +14 -14
  38. package/dist/generic/header/header.svelte +17 -17
  39. package/dist/generic/link/link.svelte +13 -13
  40. package/dist/generic/menu/menu.svelte +39 -39
  41. package/dist/generic/menu/menu.svelte.d.ts +1 -1
  42. package/dist/generic/notice/notice.svelte +25 -25
  43. package/dist/generic/overlay.svelte +8 -8
  44. package/dist/generic/panel/panel.svelte +10 -10
  45. package/dist/generic/phone/phone.svelte +56 -0
  46. package/dist/generic/phone/phone.svelte.d.ts +17 -0
  47. package/dist/generic/pill/pill.svelte +7 -7
  48. package/dist/generic/scorecard/scorecard.svelte +10 -10
  49. package/dist/generic/section/section.svelte +10 -10
  50. package/dist/helpers/capitalize.d.ts +4 -0
  51. package/dist/helpers/capitalize.js +13 -0
  52. package/dist/helpers/navigate-to.js +15 -3
  53. package/dist/helpers/nobr.d.ts +4 -0
  54. package/dist/helpers/nobr.js +4 -0
  55. package/dist/helpers/split-new-lines.d.ts +4 -0
  56. package/dist/helpers/split-new-lines.js +4 -0
  57. package/dist/helpers/ucfirst.d.ts +1 -0
  58. package/dist/helpers/ucfirst.js +3 -0
  59. package/dist/icons/angle-right-icon.svelte +11 -11
  60. package/dist/icons/angle-up-icon.svelte +9 -9
  61. package/dist/icons/check-icon.svelte +15 -15
  62. package/dist/icons/envelope-icon.svelte +8 -0
  63. package/dist/icons/envelope-icon.svelte.d.ts +23 -0
  64. package/dist/icons/folder-open-icon.svelte +12 -12
  65. package/dist/icons/hamburger-icon.svelte +15 -15
  66. package/dist/icons/home-icon.svelte +7 -7
  67. package/dist/icons/link-icon.svelte +15 -15
  68. package/dist/icons/mobile-phone-icon.svelte +5 -0
  69. package/dist/icons/mobile-phone-icon.svelte.d.ts +23 -0
  70. package/dist/icons/phone-icon.svelte +9 -0
  71. package/dist/icons/phone-icon.svelte.d.ts +23 -0
  72. package/dist/icons/svg-icon.svelte +5 -5
  73. package/dist/icons/upload-icon.svelte +9 -9
  74. package/dist/images/icon.svelte +5 -5
  75. package/dist/images/image.svelte +28 -28
  76. package/dist/index.d.ts +6 -0
  77. package/dist/index.js +6 -0
  78. package/dist/layout/flex-col.svelte +7 -7
  79. package/dist/layout/flex-item.svelte +7 -7
  80. package/dist/layout/flex-row.svelte +10 -10
  81. package/dist/layout/grid.svelte +17 -17
  82. package/dist/modals/alert.svelte +24 -24
  83. package/dist/modals/confirm.svelte +27 -27
  84. package/dist/modals/dialog-body.svelte +5 -5
  85. package/dist/modals/dialog-close-button.svelte +7 -7
  86. package/dist/modals/dialog-footer.svelte +9 -9
  87. package/dist/modals/dialog-header.svelte +5 -5
  88. package/dist/modals/dialog-window.svelte +9 -9
  89. package/dist/modals/modal.svelte +12 -12
  90. package/dist/modals/prompt.svelte +29 -29
  91. package/dist/navigation/accordian/accordian.svelte +17 -17
  92. package/dist/navigation/app-bar/app-bar.svelte +7 -7
  93. package/dist/navigation/app-bar/app-branding.svelte +18 -18
  94. package/dist/navigation/app-bar/app-logo.svelte +11 -11
  95. package/dist/navigation/app-bar/app-nav-item.svelte +14 -14
  96. package/dist/navigation/app-bar/app-nav.svelte +12 -12
  97. package/dist/navigation/breadcrumbs/breadcrumbs.svelte +25 -25
  98. package/dist/navigation/pagination/pagination.svelte +27 -27
  99. package/dist/navigation/side-bar/side-bar.svelte +10 -10
  100. package/dist/navigation/tabs/tab-group.svelte +20 -20
  101. package/dist/navigation/tabs/tab.svelte +20 -10
  102. package/dist/navigation/tabs/tab.svelte.d.ts +1 -0
  103. package/dist/navigation/wizard/wizard-step.svelte +12 -12
  104. package/dist/navigation/wizard/wizard.svelte +27 -27
  105. package/dist/placeholders/loading.svelte +9 -9
  106. package/dist/placeholders/progress.svelte +9 -9
  107. package/dist/placeholders/skeleton-text.svelte +13 -13
  108. package/dist/tables/data-grid.svelte +80 -80
  109. package/dist/tables/table-body.svelte +3 -3
  110. package/dist/tables/table-caption.svelte +5 -5
  111. package/dist/tables/table-cell.svelte +7 -7
  112. package/dist/tables/table-footer-cell.svelte +21 -21
  113. package/dist/tables/table-footer-row.svelte +3 -3
  114. package/dist/tables/table-footer.svelte +13 -13
  115. package/dist/tables/table-header-cell.svelte +7 -7
  116. package/dist/tables/table-header-row.svelte +4 -4
  117. package/dist/tables/table-header.svelte +14 -14
  118. package/dist/tables/table-row.svelte +16 -16
  119. package/dist/tables/table.svelte +11 -11
  120. package/dist/timeline/timeline-item.svelte +26 -26
  121. package/dist/timeline/timeline.svelte +5 -5
  122. package/dist/types/form.d.ts +1 -1
  123. package/dist/typography/code-block.svelte +7 -7
  124. package/dist/typography/headline.svelte +19 -19
  125. package/dist/typography/paragraph.svelte +13 -13
  126. package/dist/typography/subtitle.svelte +7 -7
  127. package/dist/typography/text.svelte +7 -7
  128. package/package.json +101 -101
@@ -0,0 +1,20 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ streetAddress?: string | undefined;
5
+ city?: string | undefined;
6
+ region?: string | undefined;
7
+ postalCode?: string | undefined;
8
+ country?: string | undefined;
9
+ };
10
+ events: {
11
+ [evt: string]: CustomEvent<any>;
12
+ };
13
+ slots: {};
14
+ };
15
+ export type AddressProps = typeof __propDef.props;
16
+ export type AddressEvents = typeof __propDef.events;
17
+ export type AddressSlots = typeof __propDef.slots;
18
+ export default class Address extends SvelteComponent<AddressProps, AddressEvents, AddressSlots> {
19
+ }
20
+ export {};
@@ -10,12 +10,12 @@ setContext("CardContainer", {
10
10
  });
11
11
  $:
12
12
  count = cards.length;
13
- </script>
14
-
15
- <ul data-count={count} class="{spacing} {align}">
16
- <slot />
17
- </ul>
18
-
13
+ </script>
14
+
15
+ <ul data-count={count} class="{spacing} {align}">
16
+ <slot />
17
+ </ul>
18
+
19
19
  <style>ul {
20
20
  list-style: none;
21
21
  padding: 0;
@@ -58,4 +58,4 @@ ul.space-between {
58
58
  }
59
59
  ul.space-around {
60
60
  justify-content: space-around;
61
- }</style>
61
+ }</style>
@@ -16,15 +16,15 @@ const container = getContext("CardContainer");
16
16
  if (container) {
17
17
  container.register(id);
18
18
  }
19
- </script>
20
-
21
- <li {role} {id} on:click={onClick} class="{size} {role}">
22
- {#if title}
23
- <strong>{title}</strong>
24
- {/if}
25
- <slot />
26
- </li>
27
-
19
+ </script>
20
+
21
+ <li {role} {id} on:click={onClick} class="{size} {role}">
22
+ {#if title}
23
+ <strong>{title}</strong>
24
+ {/if}
25
+ <slot />
26
+ </li>
27
+
28
28
  <style>li {
29
29
  display: inline-block;
30
30
  vertical-align: top;
@@ -60,4 +60,4 @@ li.lg {
60
60
  }
61
61
  li.xl {
62
62
  max-width: 30rem;
63
- }</style>
63
+ }</style>
@@ -62,6 +62,6 @@ $:
62
62
  })();
63
63
  $:
64
64
  datetime = date.toISOString();
65
- </script>
66
-
67
- <time {datetime}>{text}</time>
65
+ </script>
66
+
67
+ <time {datetime}>{text}</time>
@@ -1,9 +1,9 @@
1
- <hr />
2
-
1
+ <hr />
2
+
3
3
  <style>hr {
4
4
  border: 0;
5
5
  height: 0.1rem;
6
6
  background: var(--divider-color, rgba(127, 127, 127, 0.5));
7
7
  margin-top: 0.5rem;
8
8
  margin-bottom: 0.5rem;
9
- }</style>
9
+ }</style>
@@ -1,10 +1,10 @@
1
1
  <script>export let color = "#b7b7b7";
2
2
  export let shadow = false;
3
3
  export let size = "md";
4
- </script>
5
-
6
- <span style="background: {color}" class="{size} {shadow ? 'shadow' : ''}" />
7
-
4
+ </script>
5
+
6
+ <span style="background: {color}" class="{size} {shadow ? 'shadow' : ''}" />
7
+
8
8
  <style>span {
9
9
  display: inline-block;
10
10
  width: 0.5rem;
@@ -25,4 +25,4 @@ span.lg {
25
25
  span.xl {
26
26
  width: 1rem;
27
27
  height: 1rem;
28
- }</style>
28
+ }</style>
@@ -0,0 +1,30 @@
1
+ <script>import EnvelopeIcon from "../../icons/envelope-icon.svelte";
2
+ export let emailAddress = "";
3
+ </script>
4
+
5
+ <a href="mailto:{emailAddress}" title="Email Address">
6
+ <span class="icon">
7
+ <EnvelopeIcon />
8
+ </span>
9
+ <span class="address">
10
+ {emailAddress}
11
+ </span>
12
+ </a>
13
+
14
+ <style>a {
15
+ color: inherit;
16
+ text-decoration: none;
17
+ }
18
+ a span {
19
+ display: inline-block;
20
+ vertical-align: middle;
21
+ line-height: 1.5rem;
22
+ }
23
+ a .icon {
24
+ width: 1rem;
25
+ height: 1rem;
26
+ position: relative;
27
+ }
28
+ a:hover .address {
29
+ text-decoration: underline;
30
+ }</style>
@@ -0,0 +1,16 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ emailAddress?: string | undefined;
5
+ };
6
+ events: {
7
+ [evt: string]: CustomEvent<any>;
8
+ };
9
+ slots: {};
10
+ };
11
+ export type EmailProps = typeof __propDef.props;
12
+ export type EmailEvents = typeof __propDef.events;
13
+ export type EmailSlots = typeof __propDef.slots;
14
+ export default class Email extends SvelteComponent<EmailProps, EmailEvents, EmailSlots> {
15
+ }
16
+ export {};
@@ -3,19 +3,19 @@ export let size = "md";
3
3
  export let orientation = "vertical";
4
4
  export let reverse = false;
5
5
  export let align = "center";
6
- </script>
7
-
8
- <div class="empty {size} {orientation} {reverse ? 'reverse' : ''} {align}">
9
- {#if $$slots.default}
10
- <div class="icon">
11
- <slot />
12
- </div>
13
- {/if}
14
- <div class="text">
15
- {text}
16
- </div>
17
- </div>
18
-
6
+ </script>
7
+
8
+ <div class="empty {size} {orientation} {reverse ? 'reverse' : ''} {align}">
9
+ {#if $$slots.default}
10
+ <div class="icon">
11
+ <slot />
12
+ </div>
13
+ {/if}
14
+ <div class="text">
15
+ {text}
16
+ </div>
17
+ </div>
18
+
19
19
  <style>.empty {
20
20
  display: flex;
21
21
  flex-direction: column;
@@ -80,4 +80,4 @@ export let align = "center";
80
80
  .xl .icon {
81
81
  height: 4rem;
82
82
  width: 4rem;
83
- }</style>
83
+ }</style>
@@ -7,22 +7,22 @@ export let level = section?.level || 2;
7
7
  export let title = section?.title || "";
8
8
  export let subtitle = "";
9
9
  export let underline = false;
10
- </script>
11
-
12
- <header class:underline data-level={level}>
13
- <FlexRow>
14
- <hgroup>
15
- <Headline {level}>{title}</Headline>
16
- {#if subtitle}
17
- <Subtitle {level}>{subtitle}</Subtitle>
18
- {/if}
19
- </hgroup>
20
- <div>
21
- <slot />
22
- </div>
23
- </FlexRow>
24
- </header>
25
-
10
+ </script>
11
+
12
+ <header class:underline data-level={level}>
13
+ <FlexRow>
14
+ <hgroup>
15
+ <Headline {level}>{title}</Headline>
16
+ {#if subtitle}
17
+ <Subtitle {level}>{subtitle}</Subtitle>
18
+ {/if}
19
+ </hgroup>
20
+ <div>
21
+ <slot />
22
+ </div>
23
+ </FlexRow>
24
+ </header>
25
+
26
26
  <style>header {
27
27
  margin-bottom: 1rem;
28
28
  font-family: var(--base-headline-font-family, sans-serif);
@@ -30,4 +30,4 @@ export let underline = false;
30
30
  header.underline {
31
31
  padding-bottom: 0.5rem;
32
32
  border-bottom: solid 1px #ccc;
33
- }</style>
33
+ }</style>
@@ -3,18 +3,18 @@ export let target = void 0;
3
3
  export let underline = "none";
4
4
  export let disabled = false;
5
5
  export let display = "inline";
6
- </script>
7
-
8
- {#if disabled}
9
- <span class="link disabled underline-{underline} {display}">
10
- <slot />
11
- </span>
12
- {:else}
13
- <a {href} {target} class="link underline-{underline} {display}">
14
- <slot />
15
- </a>
16
- {/if}
17
-
6
+ </script>
7
+
8
+ {#if disabled}
9
+ <span class="link disabled underline-{underline} {display}">
10
+ <slot />
11
+ </span>
12
+ {:else}
13
+ <a {href} {target} class="link underline-{underline} {display}">
14
+ <slot />
15
+ </a>
16
+ {/if}
17
+
18
18
  <style>.link {
19
19
  text-decoration: underline;
20
20
  }
@@ -33,4 +33,4 @@ export let display = "inline";
33
33
  }
34
34
  .link[href].underline-hover:hover {
35
35
  text-decoration: underline;
36
- }</style>
36
+ }</style>
@@ -3,7 +3,7 @@ import FlexItem from "../../layout/flex-item.svelte";
3
3
  import FlexRow from "../../layout/flex-row.svelte";
4
4
  import { createEventDispatcher } from "svelte";
5
5
  export let items = [];
6
- export let value = "";
6
+ export let value = null;
7
7
  export let instructions = "";
8
8
  export let open = false;
9
9
  export let size = "md";
@@ -24,43 +24,43 @@ const scrollToItem = (index) => {
24
24
  };
25
25
  $:
26
26
  highlightIndex >= 0 && scrollToItem(highlightIndex);
27
- </script>
28
-
29
- <ul role="listbox" class="menu {open ? 'open' : 'closed'} {size}">
30
- {#if instructions}
31
- <li class="instructions">{instructions}</li>
32
- {/if}
33
- {#each items as item, i}
34
- <li
35
- on:click={() => selectItem(item)}
36
- on:keypress={() => selectItem(item)}
37
- role="option"
38
- aria-selected={item.value === value}
39
- data-index={i}
40
- >
41
- <div class:selected={i == highlightIndex}>
42
- <FlexRow>
43
- <FlexItem grow>
44
- {#if searchText}
45
- {@html item.name.replace(
46
- new RegExp(searchText, 'gi'),
47
- (match) => `<strong>${match}</strong>`
48
- )}
49
- {:else}
50
- {item.name}
51
- {/if}
52
- </FlexItem>
53
- <FlexItem>
54
- {#if item.value === value}
55
- <span class="check"><CheckIcon /></span>
56
- {/if}
57
- </FlexItem>
58
- </FlexRow>
59
- </div>
60
- </li>
61
- {/each}
62
- </ul>
63
-
27
+ </script>
28
+
29
+ <ul role="listbox" class="menu {open ? 'open' : 'closed'} {size}">
30
+ {#if instructions}
31
+ <li class="instructions">{instructions}</li>
32
+ {/if}
33
+ {#each items as item, i}
34
+ <li
35
+ on:click={() => selectItem(item)}
36
+ on:keypress={() => selectItem(item)}
37
+ role="option"
38
+ aria-selected={item.value === value}
39
+ data-index={i}
40
+ >
41
+ <div class:selected={i == highlightIndex}>
42
+ <FlexRow>
43
+ <FlexItem grow>
44
+ {#if searchText}
45
+ {@html item.name.replace(
46
+ new RegExp(searchText, 'gi'),
47
+ (match) => `<strong>${match}</strong>`
48
+ )}
49
+ {:else}
50
+ {item.name}
51
+ {/if}
52
+ </FlexItem>
53
+ <FlexItem>
54
+ {#if item.value === value}
55
+ <span class="check"><CheckIcon /></span>
56
+ {/if}
57
+ </FlexItem>
58
+ </FlexRow>
59
+ </div>
60
+ </li>
61
+ {/each}
62
+ </ul>
63
+
64
64
  <style>.menu {
65
65
  position: relative;
66
66
  width: 8rem;
@@ -113,4 +113,4 @@ $:
113
113
  display: inline-block;
114
114
  width: 1rem;
115
115
  height: 1rem;
116
- }</style>
116
+ }</style>
@@ -3,7 +3,7 @@ import type { FormFieldSizeOptions, MenuOption } from '../../index.js';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  items?: MenuOption[] | undefined;
6
- value?: string | undefined;
6
+ value?: string | null | undefined;
7
7
  instructions?: string | undefined;
8
8
  open?: boolean | undefined;
9
9
  size?: FormFieldSizeOptions | undefined;
@@ -19,30 +19,30 @@ const onClick = (e) => {
19
19
  e.stopPropagation();
20
20
  goodbye();
21
21
  };
22
- </script>
23
-
24
- <div class="notice {style} {size} {visible ? 'visible' : 'hidden'} {fading ? 'fading' : ''}">
25
- {#if $$slots.icon}
26
- <div class="icon">
27
- <slot name="icon" />
28
- </div>
29
- {/if}
30
- <div class="content">
31
- {#if title}
32
- <strong>{title}</strong>
33
- {/if}
34
- <div class="message">
35
- <slot />
36
- </div>
37
- </div>
38
-
39
- {#if dismissable}
40
- <div class="dismiss">
41
- <button type="button" on:click={onClick}>X</button>
42
- </div>
43
- {/if}
44
- </div>
45
-
22
+ </script>
23
+
24
+ <div class="notice {style} {size} {visible ? 'visible' : 'hidden'} {fading ? 'fading' : ''}">
25
+ {#if $$slots.icon}
26
+ <div class="icon">
27
+ <slot name="icon" />
28
+ </div>
29
+ {/if}
30
+ <div class="content">
31
+ {#if title}
32
+ <strong>{title}</strong>
33
+ {/if}
34
+ <div class="message">
35
+ <slot />
36
+ </div>
37
+ </div>
38
+
39
+ {#if dismissable}
40
+ <div class="dismiss">
41
+ <button type="button" on:click={onClick}>X</button>
42
+ </div>
43
+ {/if}
44
+ </div>
45
+
46
46
  <style>.notice {
47
47
  display: flex;
48
48
  flex-direction: row;
@@ -155,4 +155,4 @@ button {
155
155
  }
156
156
  button:hover {
157
157
  font-weight: bold;
158
- }</style>
158
+ }</style>
@@ -9,13 +9,13 @@ const onKeyPress = (event) => {
9
9
  onClick();
10
10
  }
11
11
  };
12
- </script>
13
-
14
- <!-- svelte-ignore a11y-no-static-element-interactions -->
15
- <div class:show on:click={onClick} on:keypress={onKeyPress}>
16
- <slot />
17
- </div>
18
-
12
+ </script>
13
+
14
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
15
+ <div class:show on:click={onClick} on:keypress={onKeyPress}>
16
+ <slot />
17
+ </div>
18
+
19
19
  <style>div {
20
20
  display: none;
21
21
  position: fixed;
@@ -30,4 +30,4 @@ div.show {
30
30
  display: flex;
31
31
  align-items: center;
32
32
  justify-content: center;
33
- }</style>
33
+ }</style>
@@ -1,14 +1,14 @@
1
1
  <script>export let title = void 0;
2
2
  export let border = true;
3
- </script>
4
-
5
- <fieldset class={border ? 'border' : 'no-border'}>
6
- {#if title}
7
- <legend>{title}</legend>
8
- {/if}
9
- <slot />
10
- </fieldset>
11
-
3
+ </script>
4
+
5
+ <fieldset class={border ? 'border' : 'no-border'}>
6
+ {#if title}
7
+ <legend>{title}</legend>
8
+ {/if}
9
+ <slot />
10
+ </fieldset>
11
+
12
12
  <style>fieldset {
13
13
  position: relative;
14
14
  margin-bottom: 1rem;
@@ -28,4 +28,4 @@ fieldset legend {
28
28
  letter-spacing: 0.1rem;
29
29
  color: var(--base-fg, #ccc);
30
30
  font-family: var(--base-headline-font-family, sans-serif);
31
- }</style>
31
+ }</style>
@@ -0,0 +1,56 @@
1
+ <script>import { capitalize } from "../../helpers/capitalize.js";
2
+ import MobilePhoneIcon from "../../icons/mobile-phone-icon.svelte";
3
+ import PhoneIcon from "../../icons/phone-icon.svelte";
4
+ export let phoneNumber;
5
+ export let type = "mobile";
6
+ const getDigits = (phoneNumber2) => {
7
+ return phoneNumber2.replace(/[^0-9]/g, "");
8
+ };
9
+ const formatPhoneNumber = (phoneNumber2) => {
10
+ const cleaned = getDigits(phoneNumber2);
11
+ const match = cleaned.match(/^(\d{3})(\d{3})(\d{4})$/);
12
+ if (match) {
13
+ return "(" + match[1] + ") " + match[2] + "-" + match[3];
14
+ }
15
+ return phoneNumber2;
16
+ };
17
+ $:
18
+ formattedPhoneNumber = formatPhoneNumber(phoneNumber);
19
+ $:
20
+ phoneNumberDigits = getDigits(phoneNumber);
21
+ $:
22
+ protocol = type === "sms" ? "sms:" : "tel:";
23
+ $:
24
+ isCellPhone = type == "mobile" || type == "sms";
25
+ </script>
26
+
27
+ <a href="{protocol}:{phoneNumberDigits}" title={capitalize(type)}>
28
+ <span class="icon">
29
+ {#if isCellPhone}
30
+ <MobilePhoneIcon />
31
+ {:else}
32
+ <PhoneIcon />
33
+ {/if}
34
+ </span>
35
+ <span class="number">
36
+ {formattedPhoneNumber}
37
+ </span>
38
+ </a>
39
+
40
+ <style>a {
41
+ color: inherit;
42
+ text-decoration: none;
43
+ }
44
+ a span {
45
+ display: inline-block;
46
+ vertical-align: middle;
47
+ line-height: 1.5rem;
48
+ }
49
+ a .icon {
50
+ width: 1rem;
51
+ height: 1rem;
52
+ position: relative;
53
+ }
54
+ a:hover .number {
55
+ text-decoration: underline;
56
+ }</style>
@@ -0,0 +1,17 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ phoneNumber: string;
5
+ type?: "sms" | "mobile" | "home" | "work" | "fax" | "other" | undefined;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {};
11
+ };
12
+ export type PhoneProps = typeof __propDef.props;
13
+ export type PhoneEvents = typeof __propDef.events;
14
+ export type PhoneSlots = typeof __propDef.slots;
15
+ export default class Phone extends SvelteComponent<PhoneProps, PhoneEvents, PhoneSlots> {
16
+ }
17
+ export {};
@@ -1,11 +1,11 @@
1
1
  <script>export let size = "md";
2
2
  export let style = "standard";
3
- </script>
4
-
5
- <span class="pill {size} {style}">
6
- <slot />
7
- </span>
8
-
3
+ </script>
4
+
5
+ <span class="pill {size} {style}">
6
+ <slot />
7
+ </span>
8
+
9
9
  <style>.pill {
10
10
  display: inline-block;
11
11
  padding: 0.25rem 0.5rem;
@@ -33,4 +33,4 @@ export let style = "standard";
33
33
  }
34
34
  .pill.square {
35
35
  border-radius: 0;
36
- }</style>
36
+ }</style>
@@ -17,15 +17,15 @@ $:
17
17
  formattedValue = typeof value === "number" ? value.toLocaleString() : value;
18
18
  $:
19
19
  isLink = !!href;
20
- </script>
21
-
22
- <button on:click={onClick} class:isLink {id}>
23
- <figure class={caption}>
24
- <span class="value">{formattedValue}</span>
25
- <figcaption><slot /></figcaption>
26
- </figure>
27
- </button>
28
-
20
+ </script>
21
+
22
+ <button on:click={onClick} class:isLink {id}>
23
+ <figure class={caption}>
24
+ <span class="value">{formattedValue}</span>
25
+ <figcaption><slot /></figcaption>
26
+ </figure>
27
+ </button>
28
+
29
29
  <style>button {
30
30
  display: inline-block;
31
31
  margin-right: 1rem;
@@ -95,4 +95,4 @@ button figure.right {
95
95
  justify-content: center;
96
96
  text-align: right;
97
97
  gap: 0.5rem;
98
- }</style>
98
+ }</style>
@@ -4,15 +4,15 @@ export let title = void 0;
4
4
  export let level = 2;
5
5
  export let size = "full";
6
6
  setContext("section", { level, title });
7
- </script>
8
-
9
- <section class="level-{level} {size}">
10
- {#if title}
11
- <Header />
12
- {/if}
13
- <slot />
14
- </section>
15
-
7
+ </script>
8
+
9
+ <section class="level-{level} {size}">
10
+ {#if title}
11
+ <Header />
12
+ {/if}
13
+ <slot />
14
+ </section>
15
+
16
16
  <style>section {
17
17
  padding: 0;
18
18
  margin-top: 1rem;
@@ -33,4 +33,4 @@ section.xl {
33
33
  }
34
34
  section.full {
35
35
  width: 100%;
36
- }</style>
36
+ }</style>