@dolanske/vui 1.3.0 → 1.4.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.
Files changed (100) hide show
  1. package/LICENSE +1 -1
  2. package/package.json +2 -2
  3. package/src/App.vue +8 -0
  4. package/src/components/Accordion/Accordion.vue +10 -3
  5. package/src/components/Accordion/accordion.scss +18 -3
  6. package/src/components/Button/Button.vue +5 -4
  7. package/src/components/Button/button.scss +9 -1
  8. package/src/components/ButtonGroup/button-group.scss +2 -2
  9. package/src/components/Calendar/calendar.scss +5 -0
  10. package/src/components/Card/Card.vue +1 -1
  11. package/src/components/CopyClipboard/copy-clipboard.scss +1 -1
  12. package/src/components/Dropdown/dropdown-item.scss +1 -1
  13. package/src/components/Dropdown/dropdown.scss +2 -2
  14. package/src/components/Grid/Grid.vue +3 -0
  15. package/src/components/Input/input.scss +3 -3
  16. package/src/components/OTP/otp.scss +3 -3
  17. package/src/components/Popout/popout.scss +1 -1
  18. package/src/components/Progress/progress.scss +1 -1
  19. package/src/components/Select/Select.vue +2 -0
  20. package/src/components/Select/select.scss +1 -1
  21. package/src/components/Sidebar/sidebar.scss +1 -1
  22. package/src/components/Table/table.scss +2 -2
  23. package/src/components/Tabs/Tabs.vue +1 -1
  24. package/src/components/Tabs/tabs.scss +2 -2
  25. package/src/examples/ExampleAccordions.vue +17 -4
  26. package/src/examples/ExamplePalette.vue +6 -0
  27. package/src/examples/ExampleTabs.vue +3 -2
  28. package/src/internal/Backdrop/backdrop.scss +2 -2
  29. package/src/style/core.scss +24 -10
  30. package/src/style/fonts.scss +73 -0
  31. package/src/style/layout.scss +8 -4
  32. package/src/style/theme.scss +1 -1
  33. package/src/style/tooltip.scss +4 -4
  34. package/src/style/typography.scss +41 -23
  35. package/src/vite-env.d.ts +1 -1
  36. package/dist/components/Accordion/Accordion.vue.d.ts +0 -47
  37. package/dist/components/Accordion/AccordionGroup.vue.d.ts +0 -21
  38. package/dist/components/Alert/Alert.vue.d.ts +0 -36
  39. package/dist/components/Avatar/Avatar.vue.d.ts +0 -25
  40. package/dist/components/Badge/Badge.vue.d.ts +0 -22
  41. package/dist/components/Breadcrumbs/BreadcrumbItem.vue.d.ts +0 -22
  42. package/dist/components/Breadcrumbs/Breadcrumbs.vue.d.ts +0 -18
  43. package/dist/components/Button/Button.vue.d.ts +0 -32
  44. package/dist/components/ButtonGroup/ButtonGroup.vue.d.ts +0 -22
  45. package/dist/components/Calendar/Calendar.vue.d.ts +0 -27
  46. package/dist/components/Card/Card.vue.d.ts +0 -26
  47. package/dist/components/Checkbox/Checkbox.vue.d.ts +0 -33
  48. package/dist/components/CopyClipboard/CopyClipboard.vue.d.ts +0 -41
  49. package/dist/components/Divider/Divider.vue.d.ts +0 -23
  50. package/dist/components/Drawer/Drawer.vue.d.ts +0 -53
  51. package/dist/components/Dropdown/Dropdown.vue.d.ts +0 -177
  52. package/dist/components/Dropdown/DropdownItem.vue.d.ts +0 -23
  53. package/dist/components/Dropdown/DropdownTitle.vue.d.ts +0 -21
  54. package/dist/components/Flex/Flex.vue.d.ts +0 -41
  55. package/dist/components/Grid/Grid.vue.d.ts +0 -34
  56. package/dist/components/Input/Color.vue.d.ts +0 -11
  57. package/dist/components/Input/Counter.vue.d.ts +0 -19
  58. package/dist/components/Input/Dropzone.vue.d.ts +0 -193
  59. package/dist/components/Input/File.vue.d.ts +0 -8
  60. package/dist/components/Input/Input.vue.d.ts +0 -56
  61. package/dist/components/Input/Password.vue.d.ts +0 -6
  62. package/dist/components/Input/Textarea.vue.d.ts +0 -31
  63. package/dist/components/Kbd/Kbd.vue.d.ts +0 -23
  64. package/dist/components/Kbd/KbdGroup.vue.d.ts +0 -19
  65. package/dist/components/Modal/Confirm.vue.d.ts +0 -43
  66. package/dist/components/Modal/Modal.vue.d.ts +0 -58
  67. package/dist/components/OTP/OTP.vue.d.ts +0 -44
  68. package/dist/components/OTP/OTPItem.vue.d.ts +0 -5
  69. package/dist/components/Pagination/Pagination.vue.d.ts +0 -46
  70. package/dist/components/Pagination/pagination.d.ts +0 -12
  71. package/dist/components/Popout/Popout.vue.d.ts +0 -36
  72. package/dist/components/Progress/Progress.vue.d.ts +0 -33
  73. package/dist/components/Radio/Radio.vue.d.ts +0 -29
  74. package/dist/components/Radio/RadioGroup.vue.d.ts +0 -27
  75. package/dist/components/Select/Select.vue.d.ts +0 -35
  76. package/dist/components/Sheet/Sheet.vue.d.ts +0 -47
  77. package/dist/components/Sidebar/Sidebar.vue.d.ts +0 -70
  78. package/dist/components/Skeleton/Skeleton.vue.d.ts +0 -8
  79. package/dist/components/Spinner/Spinner.vue.d.ts +0 -6
  80. package/dist/components/Switch/Switch.vue.d.ts +0 -28
  81. package/dist/components/Table/Cell.vue.d.ts +0 -22
  82. package/dist/components/Table/Head.vue.d.ts +0 -30
  83. package/dist/components/Table/Root.vue.d.ts +0 -41
  84. package/dist/components/Table/SelectAll.vue.d.ts +0 -2
  85. package/dist/components/Table/SelectRow.vue.d.ts +0 -6
  86. package/dist/components/Table/index.d.ts +0 -6
  87. package/dist/components/Table/table.d.ts +0 -68
  88. package/dist/components/Tabs/Tab.vue.d.ts +0 -22
  89. package/dist/components/Tabs/Tabs.vue.d.ts +0 -34
  90. package/dist/components/Toast/Toasts.vue.d.ts +0 -2
  91. package/dist/components/Toast/toast.d.ts +0 -287
  92. package/dist/components/Tooltip/Tooltip.vue.d.ts +0 -33
  93. package/dist/index.d.ts +0 -56
  94. package/dist/internal/Backdrop/Backdrop.vue.d.ts +0 -21
  95. package/dist/shared/helpers.d.ts +0 -34
  96. package/dist/shared/slots.d.ts +0 -20
  97. package/dist/shared/theme.d.ts +0 -3
  98. package/dist/shared/types.d.ts +0 -24
  99. package/dist/vui.css +0 -1
  100. package/dist/vui.js +0 -16220
package/LICENSE CHANGED
@@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you
671
671
  may consider it more useful to permit linking proprietary applications with
672
672
  the library. If this is what you want to do, use the GNU Lesser General
673
673
  Public License instead of this License. But first, please read
674
- <https://www.gnu.org/licenses/why-not-lgpl.html>.
674
+ <https://www.gnu.org/licenses/why-not-lgpl.html>.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dolanske/vui",
3
3
  "type": "module",
4
- "version": "1.3.0",
4
+ "version": "1.4.0",
5
5
  "private": false,
6
6
  "description": "Brother in Christ there's a new UI library",
7
7
  "author": "dolanske",
@@ -9,7 +9,7 @@
9
9
  "sass": "src/index.scss",
10
10
  "repository": {
11
11
  "type": "git",
12
- "url": "https://github.com/dolanske/vui.git"
12
+ "url": "git+https://github.com/dolanske/vui.git"
13
13
  },
14
14
  "keywords": [
15
15
  "vue",
package/src/App.vue CHANGED
@@ -1,4 +1,5 @@
1
1
  <script setup lang="ts">
2
+ import Card from './components/Card/Card.vue'
2
3
  import Divider from './components/Divider/Divider.vue'
3
4
  import ExampleAccordions from './examples/ExampleAccordions.vue'
4
5
  import ExampleAlerts from './examples/ExampleAlerts.vue'
@@ -35,6 +36,13 @@ import ExampleTooltips from './examples/ExampleTooltips.vue'
35
36
  <h1 class="mb-l">
36
37
  VUI
37
38
  </h1>
39
+
40
+ <Card class="typeface">
41
+ <pre><code>export function removeColorPrefix(value: string): string {
42
+ return value.replace('--dark', '--').replace('--light', '--')
43
+ }</code></pre>
44
+ </Card>
45
+
38
46
  <p>The purpose of this page is to showcase and test every single component case</p>
39
47
  <Divider :size="64" />
40
48
  <ExamplePalette />
@@ -1,13 +1,14 @@
1
1
  <script setup lang="ts">
2
2
  import { Icon } from '@iconify/vue'
3
3
  import { useResizeObserver } from '@vueuse/core'
4
- import { onMounted, ref, useTemplateRef, watch, watchEffect } from 'vue'
4
+ import { onBeforeMount, onMounted, ref, useTemplateRef, watch, watchEffect } from 'vue'
5
5
  import './accordion.scss'
6
6
 
7
7
  export interface AccordionProps {
8
8
  open?: boolean
9
9
  label?: string
10
10
  card?: boolean
11
+ unstyled?: boolean
11
12
  }
12
13
 
13
14
  const props = defineProps<AccordionProps>()
@@ -58,6 +59,12 @@ defineExpose({
58
59
  isOpen,
59
60
  })
60
61
 
62
+ onBeforeMount(() => {
63
+ if (props.card && props.unstyled) {
64
+ console.warn('[Accordion] Both \'card\' and \'unstyled\' props are selected. Unstyled will take precedence.')
65
+ }
66
+ })
67
+
61
68
  onMounted(() => {
62
69
  useResizeObserver(contentRef, ([entry]) => {
63
70
  if (isOpen.value && contentMaxHeight.value !== entry.contentRect.height) {
@@ -68,14 +75,14 @@ onMounted(() => {
68
75
  </script>
69
76
 
70
77
  <template>
71
- <div class="vui-accordion" :class="{ 'open': isOpen, 'is-card': !!props.card }">
78
+ <div class="vui-accordion" :class="{ 'open': isOpen, 'is-card': !!props.card && !props.unstyled, 'is-unstyled': !!props.unstyled }">
72
79
  <!-- Completely custom header which needs to be styled and implemented by the developer -->
73
80
  <slot v-if="$slots.trigger" name="trigger" :open :close :toggle :is-open />
74
81
  <button v-else class="vui-accordion-header" @click="isOpen = !isOpen">
75
82
  <slot name="header">
76
83
  {{ props.label }}
77
84
  </slot>
78
- <Icon icon="ph:caret-down" />
85
+ <Icon v-if="!props.unstyled" icon="ph:caret-down" />
79
86
  </button>
80
87
 
81
88
  <div
@@ -4,6 +4,19 @@
4
4
  border-bottom: 1px solid var(--color-border);
5
5
  padding-bottom: 0;
6
6
 
7
+ &.is-unstyled {
8
+ border-bottom: none;
9
+
10
+ .vui-accordion-header {
11
+ padding: unset;
12
+ text-decoration: unset;
13
+
14
+ &:hover {
15
+ text-decoration: unset;
16
+ }
17
+ }
18
+ }
19
+
7
20
  &.is-card {
8
21
  border: 1px solid var(--color-border);
9
22
  border-radius: var(--border-radius-m);
@@ -37,10 +50,12 @@
37
50
  }
38
51
 
39
52
  &.open {
40
- padding-bottom: var(--space-m);
53
+ &:not(.is-unstyled) {
54
+ padding-bottom: var(--space-m);
41
55
 
42
- .vui-accordion-header svg {
43
- transform: rotate(180deg);
56
+ .vui-accordion-header svg {
57
+ transform: rotate(180deg);
58
+ }
44
59
  }
45
60
 
46
61
  .vui-accordion-content {
@@ -2,6 +2,7 @@
2
2
  import type { Sizes } from '../../shared/types'
3
3
  import { Icon } from '@iconify/vue'
4
4
  import { computed } from 'vue'
5
+ import { isNil } from '../../shared/helpers'
5
6
  import { Size } from '../../shared/types'
6
7
  import Spinner from '../Spinner/Spinner.vue'
7
8
  import './button.scss'
@@ -42,7 +43,7 @@ const {
42
43
  const height = computed(() => {
43
44
  switch (size) {
44
45
  case Size.s: return '28px'
45
- case Size.l: return '40px'
46
+ case Size.l: return '42px'
46
47
  case Size.m:
47
48
  default: return 'var(--interactive-el-height)'
48
49
  }
@@ -51,7 +52,7 @@ const height = computed(() => {
51
52
  const padding = computed(() => {
52
53
  switch (size) {
53
54
  case Size.s: return '4px'
54
- case Size.l: return '16px'
55
+ case Size.l: return '18px'
55
56
  case Size.m:
56
57
  default: return '8px'
57
58
  }
@@ -61,7 +62,7 @@ const padding = computed(() => {
61
62
  <template>
62
63
  <button
63
64
  class="vui-button"
64
- :class="[{ loading, expand, disabled, plain, icon, square, outline }, `vui-button-variant-${variant}`]"
65
+ :class="[{ loading, expand, disabled, plain, icon, square, outline }, `vui-button-variant-${variant}`, `vui-button-size-${size}`]"
65
66
  :disabled
66
67
  role="button"
67
68
  :style="{
@@ -70,7 +71,7 @@ const padding = computed(() => {
70
71
  }"
71
72
  :name="icon && !$slots.default ? icon.split(':')[1] : undefined"
72
73
  >
73
- <Spinner size="s" />
74
+ <Spinner v-if="!isNil(loading)" size="s" />
74
75
  <div class="vui-button-slot">
75
76
  <div class="vui-button-slot-start">
76
77
  <slot name="start" />
@@ -1,6 +1,8 @@
1
1
  .vui-button {
2
2
  --button-height: var(--interactive-el-height);
3
3
  --button-padding: 8px;
4
+ --button-font-size: var(--font-size-s);
5
+ --button-font-size-l: 1.4rem;
4
6
 
5
7
  &.disabled {
6
8
  // color: var(--color-text-lighter) !important;
@@ -49,6 +51,10 @@
49
51
  border-style: dashed !important;
50
52
  }
51
53
 
54
+ &.vui-button-size-l {
55
+ font-size: var(--button-font-size-l);
56
+ }
57
+
52
58
  svg path {
53
59
  transition: var(--transition-fast);
54
60
  }
@@ -60,12 +66,13 @@
60
66
  border-radius: var(--border-radius-s);
61
67
  background: transparent;
62
68
  padding-inline: var(--button-padding);
63
- font-size: var(--font-size-s);
69
+ font-size: var(--button-font-size);
64
70
  position: relative;
65
71
  transition: var(--transition-fast);
66
72
  border: 1px solid transparent;
67
73
  background-color: transparent;
68
74
  color: var(--color-text);
75
+ font-weight: var(--font-weight-medium);
69
76
 
70
77
  // Default gray
71
78
 
@@ -74,6 +81,7 @@
74
81
  place-items: center;
75
82
  transition: var(--transition-fast);
76
83
  opacity: 1;
84
+ font-weight: var(--font-weight-medium);
77
85
  }
78
86
 
79
87
  .vui-button-slot-start,
@@ -1,9 +1,9 @@
1
1
  .vui-button-group {
2
2
  .vui-button {
3
- z-index: 1;
3
+ z-index: var(--z-default);
4
4
 
5
5
  &:hover {
6
- z-index: 2;
6
+ z-index: var(--z-active);
7
7
  }
8
8
 
9
9
  &:not(:first-child, :last-child) {
@@ -64,6 +64,11 @@
64
64
 
65
65
  .dp__main {
66
66
  font-size: var(--font-size-m);
67
+ font-weight: var(--font-weight);
68
+ }
69
+
70
+ .dp__btn {
71
+ font-weight: var(--font-medium);
67
72
  }
68
73
 
69
74
  .dp__outer_menu_wrap {
@@ -27,7 +27,7 @@ const {
27
27
  }"
28
28
  >
29
29
  <div v-if="$slots.header || $slots['header-end']" class="vui-card-header">
30
- <div>
30
+ <div class="flex-1">
31
31
  <slot name="header" />
32
32
  </div>
33
33
  <slot name="header-end" />
@@ -10,7 +10,7 @@
10
10
  font-size: var(--font-size-m);
11
11
  color: var(--color-text);
12
12
  box-shadow: var(--box-shadow);
13
- z-index: 1000;
13
+ z-index: var(--z-popout);
14
14
 
15
15
  svg path {
16
16
  color: var(--color-text);
@@ -33,7 +33,7 @@
33
33
  .vui-dropdown-item-hint {
34
34
  visibility: hidden;
35
35
  opacity: 0;
36
- z-index: -1;
36
+ z-index: var(--z-behind);
37
37
  }
38
38
  }
39
39
 
@@ -27,7 +27,7 @@
27
27
  gap: var(--space-m);
28
28
  justify-content: space-between;
29
29
  background-color: var(--color-bg-medium);
30
- z-index: 50;
30
+ z-index: var(--z-popout);
31
31
 
32
32
  &.sticky {
33
33
  position: sticky;
@@ -41,7 +41,7 @@
41
41
 
42
42
  .vui-dropdown-title-end {
43
43
  font-size: var(--font-size-s);
44
- font-weight: 400;
44
+ font-weight: var(--font-weight);
45
45
  color: var(--color-text-lighter);
46
46
  }
47
47
  }
@@ -19,6 +19,7 @@ interface Props {
19
19
  yStart?: boolean
20
20
  yEnd?: boolean
21
21
  yBaseline?: boolean
22
+ yStretch?: boolean
22
23
 
23
24
  expand?: boolean
24
25
  }
@@ -60,6 +61,8 @@ const aA = computed(() => {
60
61
  return 'center'
61
62
  else if (props.yBaseline)
62
63
  return 'baseline'
64
+ else if (props.yStretch)
65
+ return 'stretch'
63
66
  return 'flex-start'
64
67
  })
65
68
 
@@ -44,7 +44,7 @@
44
44
  input,
45
45
  textarea,
46
46
  .vui-input-style {
47
- pointer-events: none;
47
+ // pointer-events: none;
48
48
  color: var(--input-color-text-light);
49
49
  border-color: var(--input-color-border-weak);
50
50
  resize: none !important;
@@ -92,7 +92,7 @@
92
92
  }
93
93
 
94
94
  ::placeholder {
95
- font-weight: 400;
95
+ font-weight: var(--font-weight);
96
96
  color: var(--color-text-lighter);
97
97
  font-family: var(--global-font);
98
98
  }
@@ -111,7 +111,7 @@
111
111
  width: 100%;
112
112
  transition: var(--transition-fast);
113
113
  padding-inline: var(--input-padding);
114
- z-index: 1;
114
+ z-index: var(--z-default);
115
115
 
116
116
  &:has(input:focus),
117
117
  &:focus {
@@ -14,7 +14,7 @@
14
14
  height: var(--interactive-el-height);
15
15
  border: 1px solid var(--color-border-strong);
16
16
  color: var(--color-text);
17
- z-index: 1;
17
+ z-index: var(--z-default);
18
18
  font-size: var(--font-size-m);
19
19
  outline: 0 solid var(--color-text-light);
20
20
  transition: var(--transition-fast);
@@ -49,7 +49,7 @@
49
49
  }
50
50
 
51
51
  &.active {
52
- z-index: 2;
52
+ z-index: var(--z-active);
53
53
  outline-width: 2px;
54
54
 
55
55
  .blinker {
@@ -79,6 +79,6 @@
79
79
  outline-width: 0px;
80
80
  opacity: 0;
81
81
  background: transparent;
82
- z-index: 5;
82
+ z-index: var(--z-mask);
83
83
  }
84
84
  }
@@ -4,7 +4,7 @@
4
4
  min-width: 80px;
5
5
  background-color: var(--color-bg-medium);
6
6
  border-radius: var(--border-radius-m);
7
- z-index: 1000;
7
+ z-index: var(--z-popout);
8
8
  position: fixed;
9
9
  }
10
10
 
@@ -30,7 +30,7 @@
30
30
 
31
31
  .vui-progress-indicator {
32
32
  position: absolute;
33
- z-index: 4;
33
+ z-index: var(--z-active);
34
34
  inset: 0;
35
35
  right: unset;
36
36
  width: 0;
@@ -186,6 +186,8 @@ const id = useId()
186
186
  :class="{ selected: selected?.find(v => v.value === option.value) }"
187
187
  :icon="selected?.find(v => v.value === option.value) ? 'ph:check-bold' : ''"
188
188
  @click="() => {
189
+ if (readonly) return
190
+
189
191
  setValue(option)
190
192
  // In single mode, close modal after clicking
191
193
  if (single && !(required && selected && selected[0].value === option.value)) {
@@ -72,7 +72,7 @@ select {
72
72
  border-radius: var(--border-radius-s);
73
73
  padding-inline: var(--space-xs);
74
74
  transition: var(--transition-fast);
75
- z-index: 1;
75
+ z-index: var(--z-default);
76
76
  font-size: var(--font-size-m);
77
77
  color: var(--color-text);
78
78
 
@@ -28,7 +28,7 @@
28
28
  width: 224px;
29
29
  position: absolute;
30
30
  top: 0;
31
- z-index: 50;
31
+ z-index: var(--z-nav);
32
32
  background-color: var(--color-bg);
33
33
  border-right: 1px solid var(--color-border);
34
34
  transition: var(--transition-slow);
@@ -79,7 +79,7 @@
79
79
  border-left: none !important;
80
80
  transition: var(--transition-fast);
81
81
  position: relative;
82
- z-index: 1;
82
+ z-index: var(--z-default);
83
83
 
84
84
  // Fixed width, only houses a checkbox component
85
85
  &.vui-table-interactive-cell {
@@ -115,7 +115,7 @@
115
115
  display: flex;
116
116
  align-items: center;
117
117
  justify-content: center;
118
- z-index: 2;
118
+ z-index: var(--z-active);
119
119
  position: absolute;
120
120
  inset: 0;
121
121
  padding: var(--space-xs);
@@ -84,7 +84,7 @@ enforceSlotType(flattened, 'Tab')
84
84
  </template>
85
85
 
86
86
  <Transition name="fade" appear>
87
- <div ref="underline" class="vui-tab-underline" />
87
+ <div v-if="active" ref="underline" class="vui-tab-underline" />
88
88
  </Transition>
89
89
  </div>
90
90
  </template>
@@ -9,7 +9,7 @@
9
9
  &.vui-tabs-variant-filled {
10
10
  background-color: var(--color-bg-raised);
11
11
  border-bottom: none;
12
- z-index: 1;
12
+ z-index: var(--z-default);
13
13
  border-radius: var(--border-radius-m);
14
14
  padding-inline: 4px;
15
15
 
@@ -18,7 +18,7 @@
18
18
  background-color: var(--color-bg-lowered);
19
19
  top: 3px;
20
20
  bottom: 3px;
21
- z-index: -1;
21
+ z-index: var(--z-behind);
22
22
  border-radius: var(--border-radius-m);
23
23
  }
24
24
  }
@@ -19,7 +19,7 @@ const dynamicAccordions = ref([
19
19
 
20
20
  <Grid :columns="2" gap="xl">
21
21
  <div>
22
- <strong class="block mb-s">Base</strong>
22
+ <strong class="block mb-s text-semibold">Base</strong>
23
23
  <Accordion label="Open details" class="mb-xl">
24
24
  <p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Excepturi nostrum aspernatur nam earum vitae deleniti, odio atque esse sequi, in harum! Sint dolorum quis excepturi odio eum aspernatur aliquid harum.</p>
25
25
  </Accordion>
@@ -29,7 +29,7 @@ const dynamicAccordions = ref([
29
29
 
30
30
  <div class="mb-xl" />
31
31
 
32
- <strong class="block mb-s">Group</strong>
32
+ <strong class="block mb-s text-semibold">Group</strong>
33
33
  <AccordionGroup>
34
34
  <Accordion v-for="item in dynamicAccordions" :key="item" :label="item">
35
35
  Lorem ipsum dolor sit amet consectetur adipisicing elit. Nostrum aliquam ad dicta nesciunt exercitationem? Quas vitae suscipit aliquam numquam incidunt corporis ullam, nihil dolores perferendis ipsa velit tempora accusantium cupiditate.
@@ -37,20 +37,33 @@ const dynamicAccordions = ref([
37
37
  </AccordionGroup>
38
38
  </div>
39
39
  <div>
40
- <strong class="block mb-s">Card</strong>
40
+ <strong class="block mb-s text-semibold">Card</strong>
41
41
  <Accordion label="Open details" card>
42
42
  <p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Excepturi nostrum aspernatur nam earum vitae deleniti, odio atque esse sequi, in harum! Sint dolorum quis excepturi odio eum aspernatur aliquid harum.</p>
43
43
  </Accordion>
44
44
 
45
45
  <div class="mb-xl" />
46
46
 
47
- <strong class="block mb-s">Card group</strong>
47
+ <strong class="block mb-s text-semibold">Card group</strong>
48
48
  <AccordionGroup single>
49
49
  <Accordion v-for="item in dynamicAccordions" :key="item" :label="item" card class="mb-xs">
50
50
  Lorem ipsum dolor sit amet consectetur adipisicing elit. Nostrum aliquam ad dicta nesciunt exercitationem? Quas vitae suscipit aliquam numquam incidunt corporis ullam, nihil dolores perferendis ipsa velit tempora accusantium cupiditate.
51
51
  </Accordion>
52
52
  </AccordionGroup>
53
53
  </div>
54
+
55
+ <div>
56
+ <strong class="block mb-s text-semibold">Unstyled</strong>
57
+ <p class="mb-m">
58
+ In some cases, we need a fully custom animated component which hides content.
59
+ </p>
60
+ <Accordion class="mb-xl" unstyled>
61
+ <template #header>
62
+ <p>Open details</p>
63
+ </template>
64
+ <p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Excepturi nostrum aspernatur nam earum vitae deleniti, odio atque esse sequi, in harum! Sint dolorum quis excepturi odio eum aspernatur aliquid harum.</p>
65
+ </Accordion>
66
+ </div>
54
67
  </Grid>
55
68
  </div>
56
69
  </template>
@@ -75,6 +75,9 @@ import ExampleColor from './shared/ExampleColor.vue'
75
75
  <ExampleColor name="Accent" color="--light-color-accent" />
76
76
  <ExampleColor name="Bg Accent Lowered" color="--light-color-bg-accent-lowered" />
77
77
  <ExampleColor name="Bg Accent Raised" color="--light-color-bg-accent-raised" />
78
+ <!-- <div class="padder" />
79
+ <div class="w-50 block my-m mx-auto" style="height:64px;box-shadow:var(--light-box-shadow)" />
80
+ <div class="w-50 block my-m mx-auto" style="height:64px;box-shadow:var(--light-box-shadow-strong)" /> -->
78
81
  </Flex>
79
82
 
80
83
  <Flex class="theme-wrap dark" gap="xxs" column>
@@ -124,6 +127,9 @@ import ExampleColor from './shared/ExampleColor.vue'
124
127
  <ExampleColor name="Accent" color="--dark-color-accent" />
125
128
  <ExampleColor name="Bg Accent Lowered" color="--dark-color-bg-accent-lowered" />
126
129
  <ExampleColor name="Bg Accent Raised" color="--dark-color-bg-accent-raised" />
130
+ <!-- <div class="padder" />
131
+ <div class="w-50 block my-m mx-auto" style="height:64px;box-shadow:var(--dark-box-shadow)" />
132
+ <div class="w-50 block my-m mx-auto" style="height:64px;box-shadow:var(--dark-box-shadow-strong)" /> -->
127
133
  </Flex>
128
134
  </Grid>
129
135
  </div>
@@ -8,6 +8,7 @@ import Tabs from '../components/Tabs/Tabs.vue'
8
8
  // import Flex from '../components/Flex/Flex.vue'
9
9
 
10
10
  const activeTab = ref('Home')
11
+ const noActiveNow = ref('')
11
12
 
12
13
  // Dynamic test
13
14
  const dynamicTabs = ref(['First', 'Second', 'Third'])
@@ -22,9 +23,9 @@ const activeDynamic = ref(dynamicTabs.value[0])
22
23
  <table>
23
24
  <tbody>
24
25
  <tr>
25
- <th>Base</th>
26
+ <th>Base + nothing active at first</th>
26
27
  <td>
27
- <Tabs v-model="activeTab">
28
+ <Tabs v-model="noActiveNow">
28
29
  <Tab value="Home" />
29
30
  <Tab value="About" />
30
31
  <Tab value="You" />
@@ -3,7 +3,7 @@
3
3
  }
4
4
 
5
5
  .vui-backdrop {
6
- z-index: 1000;
6
+ z-index: var(--z-overlay);
7
7
  position: fixed;
8
8
  display: block;
9
9
  width: 100dvw;
@@ -16,7 +16,7 @@
16
16
  &:after {
17
17
  content: '';
18
18
  position: fixed;
19
- z-index: -1;
19
+ z-index: var(--z-behind);
20
20
  inset: 0;
21
21
  background-color: var(--color-bg-lowered);
22
22
  opacity: 0.75;
@@ -5,6 +5,7 @@
5
5
  // To overwrite any of these styles, simply create a style file and import it
6
6
  // after this one
7
7
  @use './reset.scss';
8
+ @use './fonts.scss';
8
9
  @use './theme.scss';
9
10
 
10
11
  :root {
@@ -25,7 +26,6 @@
25
26
  --font-size-xxs: 1rem;
26
27
  --font-size-xs: 1.15rem;
27
28
  --font-size-s: 1.3rem;
28
- --font-size-m: 1.45rem;
29
29
  --font-size-m: 1.5rem;
30
30
  --font-size-l: 1.8rem;
31
31
  --font-size-xl: 2rem;
@@ -42,23 +42,37 @@
42
42
  --space-xxl: 48px;
43
43
  --space-xxxl: 64px;
44
44
 
45
- --transition-fast: 0.075s all ease-in-out;
46
- --transition: 0.15s all cubic-bezier(0.65, 0, 0.35, 1);
47
- --transition-slow: 0.3s all cubic-bezier(0.65, 0, 0.35, 1);
45
+ --transition-fast: 0.055s all ease-in-out;
46
+ --transition: 0.1s all cubic-bezier(0.65, 0, 0.35, 1);
47
+ --transition-slow: 0.25s all cubic-bezier(0.65, 0, 0.35, 1);
48
48
 
49
- --global-font: Inter, sans-serif;
50
- --global-font-mono: 'Geist Mono', 'Courier New', Courier, monospace;
49
+ --global-font: 'Inter', sans-serif;
50
+ --global-font-mono: 'Geist Mono', 'Courier New', 'Courier', monospace;
51
51
 
52
- --font-weight-thin: 200;
53
- --font-weight-light: 300;
52
+ --font-weight: 300;
54
53
  --font-weight: 400;
55
54
  --font-weight-medium: 500;
56
55
  --font-weight-semibold: 600;
57
56
  --font-weight-bold: 700;
58
- --font-weight-extrabold: 700;
57
+ --font-weight-extrabold: 800;
59
58
  --font-weight-black: 900;
60
59
 
61
- --interactive-el-height: 34px;
60
+ --line-height-tight: 1.125em;
61
+ --line-height-title: 1.25em;
62
+ --line-height-base: 1.4em;
63
+
64
+ --z-behind: -1;
65
+ --z-default: 1;
66
+ --z-active: 50;
67
+ --z-mask: 75;
68
+ --z-sticky: 100;
69
+ --z-nav: 200;
70
+ --z-overlay: 300;
71
+ --z-popout: 400;
72
+ --z-toast: 500;
73
+ --z-modal: 600;
74
+
75
+ --interactive-el-height: 36px;
62
76
  }
63
77
 
64
78
  // Disable motion for users who have requested it