@globalbrain/sefirot 2.39.0 → 2.41.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,7 +1,7 @@
1
1
  <script setup lang="ts">
2
2
  import { provideCardState } from '../composables/Card'
3
3
 
4
- export type Size = 'small' | 'medium'
4
+ export type Size = 'small' | 'medium' | 'large'
5
5
 
6
6
  defineProps<{
7
7
  size?: Size
@@ -55,6 +55,13 @@ const { isCollapsed } = provideCardState()
55
55
  }
56
56
 
57
57
  &.medium {
58
+ @media (min-width: 736px) {
59
+ margin: 48px auto 128px;
60
+ max-width: 640px;
61
+ }
62
+ }
63
+
64
+ &.large {
58
65
  @media (min-width: 864px) {
59
66
  margin: 48px auto 128px;
60
67
  max-width: 768px;
@@ -18,7 +18,7 @@ defineProps<{
18
18
  background-color: var(--c-bg-elv-3);
19
19
 
20
20
  &.compact { padding: 24px; }
21
- &.wide { padding: 48px; }
21
+ &.wide { padding: 32px; }
22
22
  }
23
23
 
24
24
  .SCard > .SCardBlock:first-child {
@@ -1,5 +1,13 @@
1
+ <script setup lang="ts">
2
+ export type Space = 'compact' | 'wide'
3
+
4
+ defineProps<{
5
+ space?: Space
6
+ }>()
7
+ </script>
8
+
1
9
  <template>
2
- <div class="SCardFooter">
10
+ <div class="SCardFooter" :class="[space ?? 'compact']">
3
11
  <slot />
4
12
  </div>
5
13
  </template>
@@ -10,6 +10,8 @@
10
10
  justify-content: flex-end;
11
11
  flex-grow: 1;
12
12
  gap: 12px;
13
- padding: 12px 24px;
13
+
14
+ .SCardFooter.compact > & { padding: 12px 24px; }
15
+ .SCardFooter.wide > & { padding: 16px 32px; }
14
16
  }
15
17
  </style>
@@ -0,0 +1,78 @@
1
+ <template>
2
+ <div class="SContent">
3
+ <slot />
4
+ </div>
5
+ </template>
6
+
7
+ <style scoped lang="postcss">
8
+ .SContent {
9
+ display: flex;
10
+ flex-direction: column;
11
+ gap: 12px;
12
+ }
13
+
14
+ .SContent :deep(p) {
15
+ margin: 0;
16
+ line-height: 24px;
17
+ font-size: 14px;
18
+ font-weight: 400;
19
+ color: var(--c-text-1);
20
+ }
21
+
22
+ .SContent :deep(strong) {
23
+ font-weight: 600;
24
+ }
25
+
26
+ .SContent :deep(a) {
27
+ color: var(--c-info-text);
28
+ transition: color 0.25s;
29
+
30
+ &:hover {
31
+ color: var(--c-info-text-dark);
32
+ }
33
+ }
34
+
35
+ .SContent :deep(ul),
36
+ .SContent :deep(ol) {
37
+ margin: 0;
38
+ padding-left: 0;
39
+ list-style: none;
40
+ }
41
+
42
+ .SContent :deep(ol) {
43
+ counter-reset: s-medium-counter;
44
+ }
45
+
46
+ .SContent :deep(li) {
47
+ position: relative;
48
+ margin: 0;
49
+ padding-left: 20px;
50
+ line-height: 24px;
51
+ font-size: 14px;
52
+ font-weight: 400;
53
+ color: var(--c-text-1);
54
+ }
55
+
56
+ .SContent :deep(ul > li::before) {
57
+ position: absolute;
58
+ top: 8px;
59
+ left: 2px;
60
+ width: 8px;
61
+ height: 8px;
62
+ border-radius: 50%;
63
+ background-color: var(--c-text-3);
64
+ content: "";
65
+ }
66
+
67
+ .SContent :deep(ol > li) {
68
+ counter-increment: s-medium-counter;
69
+ }
70
+
71
+ .SContent :deep(ol > li::before) {
72
+ margin-right: 3px;
73
+ margin-left: -20px;
74
+ color: var(--c-text-2);
75
+ font-feature-settings: "tnum";
76
+ content: counter(s-medium-counter)". ";
77
+ }
78
+ </style>
@@ -0,0 +1,14 @@
1
+ <script setup lang="ts">
2
+ import SGrid from './SGrid.vue'
3
+
4
+ defineProps<{
5
+ cols?: string | number
6
+ gap?: string | number
7
+ }>()
8
+ </script>
9
+
10
+ <template>
11
+ <SGrid class="SDesc" :cols="cols" :gap="gap">
12
+ <slot />
13
+ </SGrid>
14
+ </template>
@@ -0,0 +1,52 @@
1
+ <script setup lang="ts">
2
+ import { computed, useSlots } from 'vue'
3
+ import { type Day } from '../support/Day'
4
+ import SDescEmpty from './SDescEmpty.vue'
5
+
6
+ const props = defineProps<{
7
+ value?: Day | null
8
+ format?: string
9
+ }>()
10
+
11
+ const slots = useSlots()
12
+
13
+ const _value = computed(() => {
14
+ const slotValue = slots.default?.()[0].children
15
+
16
+ if (typeof slotValue === 'string') {
17
+ return slotValue
18
+ }
19
+
20
+ if (props.value) {
21
+ return props.value.format(props.format ?? 'YYYY-MM-DD HH:mm:ss')
22
+ }
23
+
24
+ return null
25
+ })
26
+ </script>
27
+
28
+ <template>
29
+ <div v-if="_value" class="SDescDay">
30
+ <div class="value">
31
+ {{ _value }}
32
+ </div>
33
+ </div>
34
+ <SDescEmpty v-else />
35
+ </template>
36
+
37
+ <style scoped lang="postcss">
38
+ .SDescDay {
39
+ border-bottom: 1px dashed var(--c-divider-1);
40
+ padding-bottom: 7px;
41
+ }
42
+
43
+ .value {
44
+ line-height: 24px;
45
+ font-size: 14px;
46
+ font-weight: 400;
47
+ font-feature-settings: "tnum";
48
+ white-space: nowrap;
49
+ overflow: hidden;
50
+ text-overflow: ellipsis;
51
+ }
52
+ </style>
@@ -0,0 +1,19 @@
1
+ <template>
2
+ <div class="SDescEmpty">
3
+ <div class="value">—</div>
4
+ </div>
5
+ </template>
6
+
7
+ <style scoped lang="postcss">
8
+ .SDescEmpty {
9
+ border-bottom: 1px dashed var(--c-divider-1);
10
+ padding-bottom: 7px;
11
+ }
12
+
13
+ .value {
14
+ line-height: 24px;
15
+ font-size: 14px;
16
+ font-weight: 400;
17
+ color: var(--c-text-3);
18
+ }
19
+ </style>
@@ -0,0 +1,13 @@
1
+ <script setup lang="ts">
2
+ import SGridItem from './SGridItem.vue'
3
+
4
+ defineProps<{
5
+ span?: string | number
6
+ }>()
7
+ </script>
8
+
9
+ <template>
10
+ <SGridItem class="SDescItem" :span="span">
11
+ <slot />
12
+ </SGridItem>
13
+ </template>
@@ -0,0 +1,31 @@
1
+ <script setup lang="ts">
2
+ defineProps<{
3
+ value?: string | null
4
+ }>()
5
+ </script>
6
+
7
+ <template>
8
+ <div class="SDescLabel">
9
+ <div class="value">
10
+ <slot v-if="$slots.default" />
11
+ <template v-else>{{ value }}</template>
12
+ </div>
13
+ </div>
14
+ </template>
15
+
16
+ <style scoped lang="postcss">
17
+ .SDescLabel {
18
+ display: flex;
19
+ height: 24px;
20
+ }
21
+
22
+ .value {
23
+ line-height: 24px;
24
+ font-size: 12px;
25
+ font-weight: 500;
26
+ color: var(--c-text-2);
27
+ white-space: nowrap;
28
+ overflow: hidden;
29
+ text-overflow: ellipsis;
30
+ }
31
+ </style>
@@ -0,0 +1,59 @@
1
+ <script setup lang="ts">
2
+ import { computed, useSlots } from 'vue'
3
+ import SDescEmpty from './SDescEmpty.vue'
4
+ import SLink from './SLink.vue'
5
+
6
+ const props = defineProps<{
7
+ value?: string | null
8
+ href?: string
9
+ }>()
10
+
11
+ const slots = useSlots()
12
+
13
+ const link = computed(() => {
14
+ if (props.href) {
15
+ return props.href
16
+ }
17
+
18
+ const slotValue = slots.default?.()[0].children
19
+
20
+ if (typeof slotValue === 'string') {
21
+ return slotValue
22
+ }
23
+
24
+ return props.value
25
+ })
26
+ </script>
27
+
28
+ <template>
29
+ <div v-if="$slots.default || value" class="SDescLink">
30
+ <SLink class="value" :href="link">
31
+ <slot v-if="$slots.default" />
32
+ <template v-else>{{ value }}</template>
33
+ </SLink>
34
+ </div>
35
+ <SDescEmpty v-else />
36
+ </template>
37
+
38
+ <style scoped lang="postcss">
39
+ .SDescLink {
40
+ border-bottom: 1px dashed var(--c-divider-1);
41
+ padding-bottom: 7px;
42
+ }
43
+
44
+ .value {
45
+ display: block;
46
+ line-height: 24px;
47
+ font-size: 14px;
48
+ font-weight: 400;
49
+ white-space: nowrap;
50
+ overflow: hidden;
51
+ text-overflow: ellipsis;
52
+ color: var(--c-info-text);
53
+ transition: color 0.25s;
54
+
55
+ &:hover {
56
+ color: var(--c-info-text-dark);
57
+ }
58
+ }
59
+ </style>
@@ -0,0 +1,50 @@
1
+ <script setup lang="ts">
2
+ import { computed, useSlots } from 'vue'
3
+ import { format } from '../support/Num'
4
+ import SDescEmpty from './SDescEmpty.vue'
5
+
6
+ const props = defineProps<{
7
+ value?: number | null
8
+ separator?: boolean
9
+ }>()
10
+
11
+ const slots = useSlots()
12
+
13
+ const _value = computed(() => {
14
+ const slotValue = slots.default?.()[0].children
15
+
16
+ const v = (typeof slotValue === 'string') ? Number(slotValue) : props.value
17
+
18
+ if (v == null) {
19
+ return null
20
+ }
21
+
22
+ return props.separator ? format(v) : v
23
+ })
24
+ </script>
25
+
26
+ <template>
27
+ <div v-if="_value" class="SDescNumber">
28
+ <div class="value">
29
+ {{ _value }}
30
+ </div>
31
+ </div>
32
+ <SDescEmpty v-else />
33
+ </template>
34
+
35
+ <style scoped lang="postcss">
36
+ .SDescNumber {
37
+ border-bottom: 1px dashed var(--c-divider-1);
38
+ padding-bottom: 7px;
39
+ }
40
+
41
+ .value {
42
+ line-height: 24px;
43
+ font-size: 14px;
44
+ font-weight: 400;
45
+ font-feature-settings: "tnum";
46
+ white-space: nowrap;
47
+ overflow: hidden;
48
+ text-overflow: ellipsis;
49
+ }
50
+ </style>
@@ -0,0 +1,51 @@
1
+ <script setup lang="ts">
2
+ import { computed } from 'vue'
3
+ import { isArray } from '../support/Utils'
4
+ import SDescEmpty from './SDescEmpty.vue'
5
+ import SPill, { type Mode } from './SPill.vue'
6
+
7
+ export interface Pill {
8
+ mode?: Mode
9
+ label: string
10
+ }
11
+
12
+ const props = defineProps<{
13
+ pill?: Pill | Pill[] | null
14
+ }>()
15
+
16
+ const pills = computed(() => {
17
+ return props.pill
18
+ ? isArray(props.pill) ? props.pill : [props.pill]
19
+ : null
20
+ })
21
+ </script>
22
+
23
+ <template>
24
+ <div v-if="pills && pills.length" class="SDescPill">
25
+ <div class="value">
26
+ <div v-for="pill, index in pills" :key="index" class="pill">
27
+ <SPill tag="div" size="mini" :mode="pill.mode" :label="pill.label" />
28
+ </div>
29
+ </div>
30
+ </div>
31
+ <SDescEmpty v-else />
32
+ </template>
33
+
34
+ <style scoped lang="postcss">
35
+ .SDescPill {
36
+ border-bottom: 1px dashed var(--c-divider-1);
37
+ padding-bottom: 7px;
38
+ }
39
+
40
+ .value {
41
+ display: flex;
42
+ gap: 4px 6px;
43
+ flex-wrap: wrap;
44
+ }
45
+
46
+ .pill {
47
+ display: flex;
48
+ align-items: center;
49
+ height: 24px;
50
+ }
51
+ </style>
@@ -0,0 +1,35 @@
1
+ <script setup lang="ts">
2
+ import SDescEmpty from './SDescEmpty.vue'
3
+ import SState, { type Mode } from './SState.vue'
4
+
5
+ export interface State {
6
+ mode?: Mode
7
+ label: string
8
+ }
9
+
10
+ defineProps<{
11
+ state?: State | null
12
+ }>()
13
+ </script>
14
+
15
+ <template>
16
+ <div v-if="state" class="SDescState">
17
+ <div class="value">
18
+ <SState as="div" size="mini" :mode="state.mode" :label="state.label" />
19
+ </div>
20
+ </div>
21
+ <SDescEmpty v-else />
22
+ </template>
23
+
24
+ <style scoped lang="postcss">
25
+ .SDescState {
26
+ border-bottom: 1px dashed var(--c-divider-1);
27
+ padding-bottom: 7px;
28
+ }
29
+
30
+ .value {
31
+ display: flex;
32
+ align-items: center;
33
+ height: 24px;
34
+ }
35
+ </style>
@@ -0,0 +1,61 @@
1
+ <script setup lang="ts">
2
+ import { computed } from 'vue'
3
+ import SDescEmpty from './SDescEmpty.vue'
4
+
5
+ const props = defineProps<{
6
+ value?: string | null
7
+ lineClamp?: string | number
8
+ preWrap?: boolean
9
+ }>()
10
+
11
+ const classes = computed(() => [
12
+ { 'line-clamp': props.lineClamp },
13
+ { 'pre-wrap': props.preWrap }
14
+ ])
15
+
16
+ const lineClamp = computed(() => props.lineClamp ?? 'none')
17
+ </script>
18
+
19
+ <template>
20
+ <div v-if="$slots.default || value" class="SDescText" :class="classes">
21
+ <div class="value">
22
+ <slot v-if="$slots.default" />
23
+ <template v-else>{{ value }}</template>
24
+ </div>
25
+ </div>
26
+ <SDescEmpty v-else />
27
+ </template>
28
+
29
+ <style scoped lang="postcss">
30
+ .SDescText {
31
+ border-bottom: 1px dashed var(--c-divider-1);
32
+ padding-bottom: 7px;
33
+ }
34
+
35
+ .value {
36
+ line-height: 24px;
37
+ font-size: 14px;
38
+ font-weight: 400;
39
+
40
+ .SDescText.line-clamp & {
41
+ display: -webkit-box;
42
+ -webkit-line-clamp: v-bind(lineClamp);
43
+ -webkit-box-orient: vertical;
44
+ text-overflow: ellipsis;
45
+ overflow: hidden;
46
+ }
47
+
48
+ .SDescText.pre-wrap & {
49
+ white-space: pre-wrap;
50
+ }
51
+ }
52
+
53
+ .value :deep(a) {
54
+ color: var(--c-info-text);
55
+ transition: color 0.25s;
56
+
57
+ &:hover {
58
+ color: var(--c-info-text-dark);
59
+ }
60
+ }
61
+ </style>
@@ -24,6 +24,7 @@ defineProps<{
24
24
  min-width: 256px;
25
25
  max-height: 384px;
26
26
  overflow-y: auto;
27
+ white-space: normal;
27
28
 
28
29
  &::-webkit-scrollbar {
29
30
  display: none;
@@ -115,6 +115,7 @@ function handleClick(option: DropdownSectionFilterOption, value: string | number
115
115
  padding: 0 8px;
116
116
  width: 100%;
117
117
  font-size: 14px;
118
+ font-family: var(--input-value-font-family);
118
119
  line-height: 32px;
119
120
  background-color: var(--input-bg-color);
120
121
  transition: border-color 0.25s;
@@ -0,0 +1,29 @@
1
+ <script setup lang="ts">
2
+ import { computed } from 'vue'
3
+
4
+ const props = defineProps<{
5
+ cols?: string | number
6
+ gap?: string | number
7
+ }>()
8
+
9
+ const styles = computed(() => {
10
+ return {
11
+ '--grid-template-columns': `repeat(${props.cols ?? 1}, minmax(0, 1fr))`,
12
+ '--gap': `${props.gap ?? 0}px`
13
+ }
14
+ })
15
+ </script>
16
+
17
+ <template>
18
+ <div class="SGrid" :style="styles">
19
+ <slot />
20
+ </div>
21
+ </template>
22
+
23
+ <style scoped lang="postcss">
24
+ .SGrid {
25
+ display: grid;
26
+ grid-template-columns: var(--grid-template-columns);
27
+ gap: var(--gap);
28
+ }
29
+ </style>
@@ -0,0 +1,14 @@
1
+ <script setup lang="ts">
2
+ defineProps<{
3
+ span?: string | number
4
+ }>()
5
+ </script>
6
+
7
+ <template>
8
+ <div
9
+ class="SGridItem"
10
+ :style="{ gridColumn: span ? `span ${span}` : undefined }"
11
+ >
12
+ <slot />
13
+ </div>
14
+ </template>
@@ -0,0 +1,5 @@
1
+ <template>
2
+ <div class="SHead">
3
+ <slot />
4
+ </div>
5
+ </template>
@@ -0,0 +1,22 @@
1
+ <template>
2
+ <div class="SHeadLead">
3
+ <slot />
4
+ </div>
5
+ </template>
6
+
7
+ <style scoped lang="postcss">
8
+ .SHeadLead {
9
+ line-height: 24px;
10
+ font-size: 14px;
11
+ color: var(--c-text-2);
12
+ }
13
+
14
+ .SHeadLead :deep(a) {
15
+ color: var(--c-info-text);
16
+ transition: color 0.25s;
17
+
18
+ &:hover {
19
+ color: var(--c-info-text-dark);
20
+ }
21
+ }
22
+ </style>
@@ -0,0 +1,14 @@
1
+ <template>
2
+ <div class="SHeadTitle">
3
+ <slot />
4
+ </div>
5
+ </template>
6
+
7
+ <style scoped lang="postcss">
8
+ .SHeadTitle {
9
+ line-height: 32px;
10
+ font-size: 20px;
11
+ font-weight: 500;
12
+ color: var(--c-text-1);
13
+ }
14
+ </style>
@@ -122,7 +122,7 @@ function getValue(value: string): string | null {
122
122
 
123
123
  const input = Number(value)
124
124
 
125
- return isNaN(input) ? null : String(input)
125
+ return Number.isNaN(input) ? null : String(input)
126
126
  }
127
127
 
128
128
  function emitTouch(type: ValueType): void {
@@ -308,7 +308,7 @@ function createRequiredTouched(): boolean[] {
308
308
  }
309
309
 
310
310
  .input {
311
- font-family: var(--font-family-number);
311
+ font-family: var(--input-value-font-family, var(--font-family-number));
312
312
  line-height: 24px;
313
313
  background-color: transparent;
314
314
 
@@ -393,6 +393,7 @@ function getValue(e: Event | FocusEvent | KeyboardEvent): string | null {
393
393
  width: 100%;
394
394
  background-color: transparent;
395
395
  cursor: text;
396
+ font-family: var(--input-value-font-family);
396
397
 
397
398
  &.neutral:not(.hide) { color: var(--input-value-color); }
398
399
  &.info:not(.hide) { color: var(--c-info-text); }
@@ -147,6 +147,7 @@ function emitBlur(e: FocusEvent): void {
147
147
  border: 1px solid var(--input-border-color);
148
148
  border-radius: 6px;
149
149
  width: 100%;
150
+ font-family: var(--input-value-font-family);
150
151
  font-weight: 400;
151
152
  background-color: var(--input-bg-color);
152
153
  transition: border-color 0.25s, background-color 0.25s;
@@ -302,6 +302,7 @@ function createRequiredTouched(): boolean[] {
302
302
 
303
303
  .input {
304
304
  line-height: 24px;
305
+ font-family: var(--input-value-font-family, var(--font-family-number));
305
306
  font-feature-settings: "tnum";
306
307
  background-color: transparent;
307
308
 
@@ -86,7 +86,7 @@ export function useLink({ container, callbacks }: UseLinkOptions): UseLink {
86
86
  }
87
87
 
88
88
  if (isCallback) {
89
- const idx = parseInt(target.dataset.callbackId || '')
89
+ const idx = Number.parseInt(target.dataset.callbackId || '')
90
90
  const callback = (callbacks ?? [])[idx]
91
91
 
92
92
  if (!callback) {
@@ -12,19 +12,31 @@ import SCardHeaderActions from '../components/SCardHeaderActions.vue'
12
12
  import SCardHeaderTitle from '../components/SCardHeaderTitle.vue'
13
13
 
14
14
  export function mixin(app: App): void {
15
- app.mixin({
16
- components: {
17
- SCard,
18
- SCardBlock,
19
- SCardFooter,
20
- SCardFooterAction,
21
- SCardFooterActions,
22
- SCardHeader,
23
- SCardHeaderAction,
24
- SCardHeaderActionClose,
25
- SCardHeaderActionCollapse,
26
- SCardHeaderActions,
27
- SCardHeaderTitle
28
- }
29
- })
15
+ app.component('SCard', SCard)
16
+ app.component('SCardBlock', SCardBlock)
17
+ app.component('SCardFooter', SCardFooter)
18
+ app.component('SCardFooterAction', SCardFooterAction)
19
+ app.component('SCardFooterActions', SCardFooterActions)
20
+ app.component('SCardHeader', SCardHeader)
21
+ app.component('SCardHeaderAction', SCardHeaderAction)
22
+ app.component('SCardHeaderActionClose', SCardHeaderActionClose)
23
+ app.component('SCardHeaderActionCollapse', SCardHeaderActionCollapse)
24
+ app.component('SCardHeaderActions', SCardHeaderActions)
25
+ app.component('SCardHeaderTitle', SCardHeaderTitle)
26
+ }
27
+
28
+ declare module 'vue' {
29
+ export interface GlobalComponents {
30
+ SCard: typeof SCard
31
+ SCardBlock: typeof SCardBlock
32
+ SCardFooter: typeof SCardFooter
33
+ SCardFooterAction: typeof SCardFooterAction
34
+ SCardFooterActions: typeof SCardFooterActions
35
+ SCardHeader: typeof SCardHeader
36
+ SCardHeaderAction: typeof SCardHeaderAction
37
+ SCardHeaderActionClose: typeof SCardHeaderActionClose
38
+ SCardHeaderActionCollapse: typeof SCardHeaderActionCollapse
39
+ SCardHeaderActions: typeof SCardHeaderActions
40
+ SCardHeaderTitle: typeof SCardHeaderTitle
41
+ }
30
42
  }
@@ -0,0 +1,39 @@
1
+ import { type App } from 'vue'
2
+ import SDesc from '../components/SDesc.vue'
3
+ import SDescDay from '../components/SDescDay.vue'
4
+ import SDescEmpty from '../components/SDescEmpty.vue'
5
+ import SDescItem from '../components/SDescItem.vue'
6
+ import SDescLabel from '../components/SDescLabel.vue'
7
+ import SDescLink from '../components/SDescLink.vue'
8
+ import SDescNumber from '../components/SDescNumber.vue'
9
+ import SDescPill from '../components/SDescPill.vue'
10
+ import SDescState from '../components/SDescState.vue'
11
+ import SDescText from '../components/SDescText.vue'
12
+
13
+ export function mixin(app: App): void {
14
+ app.component('SDesc', SDesc)
15
+ app.component('SDescDay', SDescDay)
16
+ app.component('SDescEmpty', SDescEmpty)
17
+ app.component('SDescItem', SDescItem)
18
+ app.component('SDescLabel', SDescLabel)
19
+ app.component('SDescLink', SDescLink)
20
+ app.component('SDescNumber', SDescNumber)
21
+ app.component('SDescPill', SDescPill)
22
+ app.component('SDescState', SDescState)
23
+ app.component('SDescText', SDescText)
24
+ }
25
+
26
+ declare module 'vue' {
27
+ export interface GlobalComponents {
28
+ SDesc: typeof SDesc
29
+ SDescDay: typeof SDescDay
30
+ SDescEmpty: typeof SDescEmpty
31
+ SDescItem: typeof SDescItem
32
+ SDescLabel: typeof SDescLabel
33
+ SDescLink: typeof SDescLink
34
+ SDescNumber: typeof SDescNumber
35
+ SDescPill: typeof SDescPill
36
+ SDescState: typeof SDescState
37
+ SDescText: typeof SDescText
38
+ }
39
+ }
@@ -0,0 +1,15 @@
1
+ import { type App } from 'vue'
2
+ import SGrid from '../components/SGrid.vue'
3
+ import SGridItem from '../components/SGridItem.vue'
4
+
5
+ export function mixin(app: App): void {
6
+ app.component('SGrid', SGrid)
7
+ app.component('SGridItem', SGridItem)
8
+ }
9
+
10
+ declare module 'vue' {
11
+ export interface GlobalComponents {
12
+ SGrid: typeof SGrid
13
+ SGridItem: typeof SGridItem
14
+ }
15
+ }
@@ -0,0 +1,18 @@
1
+ import { type App } from 'vue'
2
+ import SHead from '../components/SHead.vue'
3
+ import SHeadLead from '../components/SHeadLead.vue'
4
+ import SHeadTitle from '../components/SHeadTitle.vue'
5
+
6
+ export function mixin(app: App): void {
7
+ app.component('SHead', SHead)
8
+ app.component('SHeadLead', SHeadLead)
9
+ app.component('SHeadTitle', SHeadTitle)
10
+ }
11
+
12
+ declare module 'vue' {
13
+ export interface GlobalComponents {
14
+ SHead: typeof SHead
15
+ SHeadLead: typeof SHeadLead
16
+ SHeadTitle: typeof SHeadTitle
17
+ }
18
+ }
@@ -8,15 +8,23 @@ import SSheetMedium from '../components/SSheetMedium.vue'
8
8
  import SSheetTitle from '../components/SSheetTitle.vue'
9
9
 
10
10
  export function mixin(app: App): void {
11
- app.mixin({
12
- components: {
13
- SSheet,
14
- SSheetTitle,
15
- SSheetMedium,
16
- SSheetForm,
17
- SSheetFooter,
18
- SSheetFooterActions,
19
- SSheetFooterAction
20
- }
21
- })
11
+ app.component('SSheet', SSheet)
12
+ app.component('SSheetFooter', SSheetFooter)
13
+ app.component('SSheetFooterAction', SSheetFooterAction)
14
+ app.component('SSheetFooterActions', SSheetFooterActions)
15
+ app.component('SSheetForm', SSheetForm)
16
+ app.component('SSheetMedium', SSheetMedium)
17
+ app.component('SSheetTitle', SSheetTitle)
18
+ }
19
+
20
+ declare module 'vue' {
21
+ export interface GlobalComponents {
22
+ SSheet: typeof SSheet
23
+ SSheetFooter: typeof SSheetFooter
24
+ SSheetFooterAction: typeof SSheetFooterAction
25
+ SSheetFooterActions: typeof SSheetFooterActions
26
+ SSheetForm: typeof SSheetForm
27
+ SSheetMedium: typeof SSheetMedium
28
+ SSheetTitle: typeof SSheetTitle
29
+ }
22
30
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@globalbrain/sefirot",
3
- "version": "2.39.0",
3
+ "version": "2.41.0",
4
4
  "packageManager": "pnpm@8.6.2",
5
5
  "description": "Vue Components for Global Brain Design System.",
6
6
  "author": "Kia Ishii <ka.ishii@globalbrains.com>",
@@ -47,7 +47,7 @@
47
47
  "dayjs": "^1.11.7"
48
48
  },
49
49
  "devDependencies": {
50
- "@globalbrain/eslint-config": "^1.5.0",
50
+ "@globalbrain/eslint-config": "^1.5.1",
51
51
  "@histoire/plugin-vue": "^0.16.1",
52
52
  "@iconify-icons/ph": "^1.2.4",
53
53
  "@iconify/vue": "^4.1.1",
@@ -56,7 +56,7 @@
56
56
  "@types/markdown-it": "^12.2.3",
57
57
  "@types/node": "^20.1.1",
58
58
  "@vitejs/plugin-vue": "^4.2.1",
59
- "@vitest/coverage-c8": "^0.31.0",
59
+ "@vitest/coverage-c8": "^0.33.0",
60
60
  "@vue/test-utils": "^2.3.2",
61
61
  "@vuelidate/core": "^2.0.2",
62
62
  "@vuelidate/validators": "^2.0.2",
@@ -65,10 +65,10 @@
65
65
  "chalk": "^4.1.2",
66
66
  "conventional-changelog-cli": "^2.2.2",
67
67
  "enquirer": "^2.3.6",
68
- "eslint": "^8.40.0",
68
+ "eslint": "^8.44.0",
69
69
  "execa": "^5.1.1",
70
70
  "fuse.js": "^6.6.2",
71
- "happy-dom": "^9.10.9",
71
+ "happy-dom": "^10.1.1",
72
72
  "histoire": "^0.16.1",
73
73
  "lodash-es": "^4.17.21",
74
74
  "markdown-it": "^13.0.1",
@@ -81,7 +81,7 @@
81
81
  "v-calendar": "^3.0.3",
82
82
  "vite": "^4.3.5",
83
83
  "vitepress": "1.0.0-alpha.75",
84
- "vitest": "^0.31.0",
84
+ "vitest": "^0.33.0",
85
85
  "vue": "^3.2.47",
86
86
  "vue-router": "^4.1.6",
87
87
  "vue-tsc": "^1.7.1",