@xleddyl/443-components-vue 0.3.0 → 0.5.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 (109) hide show
  1. package/README.md +52 -25
  2. package/dist/components/core/FieldBoundary.vue +14 -0
  3. package/dist/components/core/FieldBoundary.vue.d.ts +15 -0
  4. package/dist/components/core/Form.vue +91 -12
  5. package/dist/components/core/Form.vue.d.ts +27 -2
  6. package/dist/components/core/FormAlerts.vue +30 -0
  7. package/dist/{internal/forms → components/core}/FormAlerts.vue.d.ts +4 -4
  8. package/dist/components/core/FormField.vue +18 -3
  9. package/dist/components/core/index.d.ts +2 -0
  10. package/dist/components/core/index.mjs +2 -0
  11. package/dist/components/data/FilterPills.vue +82 -37
  12. package/dist/components/data/FilterPills.vue.d.ts +46 -427
  13. package/dist/components/data/SelectionBar.vue +7 -4
  14. package/dist/components/data/Tree.vue +9 -4
  15. package/dist/components/data/Tree.vue.d.ts +4 -1
  16. package/dist/components/data/types.d.ts +7 -2
  17. package/dist/components/forms/CheckboxGroup.vue +2 -1
  18. package/dist/components/forms/FileInput.vue +98 -26
  19. package/dist/components/forms/FileInput.vue.d.ts +28 -10
  20. package/dist/components/forms/RadioGroup.vue +2 -1
  21. package/dist/components/forms/SegmentedControl.vue +2 -1
  22. package/dist/components/forms/types.d.ts +3 -0
  23. package/dist/components/layout/Accordion.vue.d.ts +4 -4
  24. package/dist/components/layout/AppShell.vue +1 -1
  25. package/dist/components/layout/AppShell.vue.d.ts +2 -2
  26. package/dist/components/layout/Tabs.vue +10 -1
  27. package/dist/components/layout/Tabs.vue.d.ts +4 -0
  28. package/dist/components/layout/types.d.ts +1 -0
  29. package/dist/components/overlays/CommandPalette.vue +10 -4
  30. package/dist/components/overlays/CommandPalette.vue.d.ts +273 -511
  31. package/dist/components/overlays/HoverCard.vue +1 -1
  32. package/dist/components/overlays/HoverCard.vue.d.ts +2 -2
  33. package/dist/components/overlays/Popover.vue +1 -1
  34. package/dist/components/overlays/Popover.vue.d.ts +2 -2
  35. package/dist/components/overlays/Toaster.vue +35 -4
  36. package/dist/components/overlays/Toaster.vue.d.ts +3 -0
  37. package/dist/components/overlays/types.d.ts +8 -4
  38. package/dist/components/templates/DashboardLayout.vue +21 -18
  39. package/dist/components/templates/DashboardLayout.vue.d.ts +332 -565
  40. package/dist/components/templates/ListPage.vue +1 -1
  41. package/dist/components/templates/ListPage.vue.d.ts +3 -3
  42. package/dist/components/templates/types.d.ts +4 -4
  43. package/dist/composables/useField.d.ts +6 -1
  44. package/dist/composables/useField.mjs +40 -12
  45. package/dist/composables/useFieldBoundary.d.ts +1 -0
  46. package/dist/composables/useFieldBoundary.mjs +5 -1
  47. package/dist/composables/useFileDrop.d.ts +14 -1
  48. package/dist/composables/useFileDrop.mjs +21 -20
  49. package/dist/composables/useForm.d.ts +4 -0
  50. package/dist/composables/useForm.mjs +62 -22
  51. package/dist/editor/RichTextEditor.vue +2 -1
  52. package/dist/internal/core/ButtonElement.d.ts +2 -0
  53. package/dist/internal/core/ButtonElement.mjs +8 -0
  54. package/dist/internal/forms/files.d.ts +7 -0
  55. package/dist/internal/forms/files.mjs +24 -0
  56. package/dist/internal/keys.d.ts +2 -1
  57. package/dist/internal/keys.mjs +1 -0
  58. package/dist/internal/layout/route.mjs +1 -1
  59. package/dist/locale/en.mjs +4 -1
  60. package/dist/locale/it.mjs +4 -1
  61. package/dist/locale/types.d.ts +3 -0
  62. package/dist/nuxt/module.mjs +1 -1
  63. package/dist/styles/core/button.css +1 -13
  64. package/dist/styles/core/form-field.css +2 -2
  65. package/dist/styles/data/avatar.css +1 -1
  66. package/dist/styles/data/description-list.css +5 -3
  67. package/dist/styles/data/filter-pills.css +0 -1
  68. package/dist/styles/data/pagination.css +0 -1
  69. package/dist/styles/data/selection-bar.css +4 -0
  70. package/dist/styles/data/stat.css +1 -6
  71. package/dist/styles/data/table.css +1 -2
  72. package/dist/styles/data/tag.css +1 -4
  73. package/dist/styles/data/timeline.css +1 -0
  74. package/dist/styles/data/tree.css +8 -2
  75. package/dist/styles/feedback/alert.css +1 -1
  76. package/dist/styles/feedback/empty-state.css +6 -5
  77. package/dist/styles/forms/color-input.css +1 -1
  78. package/dist/styles/forms/combobox.css +0 -1
  79. package/dist/styles/forms/date-picker.css +1 -1
  80. package/dist/styles/forms/file-input.css +9 -1
  81. package/dist/styles/forms/number-input.css +1 -1
  82. package/dist/styles/forms/password-input.css +1 -5
  83. package/dist/styles/forms/switch.css +0 -1
  84. package/dist/styles/layout/accordion.css +7 -2
  85. package/dist/styles/layout/card.css +13 -7
  86. package/dist/styles/layout/copy-button.css +2 -2
  87. package/dist/styles/layout/nav-link.css +1 -2
  88. package/dist/styles/layout/page-header.css +2 -1
  89. package/dist/styles/layout/sidebar-nav.css +1 -1
  90. package/dist/styles/layout/sidebar.css +1 -1
  91. package/dist/styles/layout/tabs.css +22 -2
  92. package/dist/styles/layout/theme-switch.css +1 -3
  93. package/dist/styles/overlays/command.css +1 -1
  94. package/dist/styles/overlays/confirm.css +0 -1
  95. package/dist/styles/overlays/drawer.css +23 -2
  96. package/dist/styles/overlays/menu.css +2 -4
  97. package/dist/styles/overlays/modal.css +4 -3
  98. package/dist/styles/overlays/toast.css +0 -1
  99. package/dist/styles/templates/auth-layout.css +4 -1
  100. package/dist/styles/templates/empty-page.css +7 -3
  101. package/dist/styles/templates/error-page.css +4 -0
  102. package/dist/styles/templates/form-page.css +1 -1
  103. package/dist/styles/templates/page.css +1 -1
  104. package/dist/styles/templates/settings-modal.css +4 -2
  105. package/dist/styles/tokens.css +1 -1
  106. package/package.json +1 -1
  107. package/dist/internal/forms/FormAlerts.vue +0 -25
  108. package/dist/internal/overlays/FieldBoundary.d.ts +0 -4
  109. package/dist/internal/overlays/FieldBoundary.mjs +0 -9
@@ -2,7 +2,7 @@
2
2
  --k-icon-size: 0.875rem;
3
3
  display: flex;
4
4
  flex-direction: column;
5
- gap: 0.4375rem;
5
+ gap: 0.375rem;
6
6
  min-width: 0;
7
7
  }
8
8
 
@@ -46,7 +46,7 @@
46
46
  .k-form-field-description {
47
47
  margin-top: -0.125rem;
48
48
  font-size: 0.75rem;
49
- line-height: 1.45;
49
+ line-height: 1.4;
50
50
  color: var(--k-text-muted);
51
51
  }
52
52
 
@@ -118,7 +118,7 @@
118
118
 
119
119
  .k-avatar-group > .k-avatar {
120
120
  box-shadow: 0 0 0 2px var(--k-surface);
121
- transition: translate var(--k-duration-lg) var(--k-ease-spring);
121
+ transition: translate var(--k-duration-lg) var(--k-ease-out);
122
122
  }
123
123
 
124
124
  .k-avatar-group > .k-avatar + .k-avatar {
@@ -6,7 +6,8 @@
6
6
 
7
7
  .k-description-item {
8
8
  display: grid;
9
- gap: 0.25rem;
9
+ align-content: start;
10
+ gap: 0.125rem;
10
11
  min-width: 0;
11
12
  padding-block: 0.625rem;
12
13
  animation: k-row-in 360ms var(--k-ease-out) backwards;
@@ -51,6 +52,7 @@
51
52
  .k-description-details {
52
53
  display: flex;
53
54
  flex-direction: column;
55
+ align-items: flex-start;
54
56
  gap: 0.125rem;
55
57
  min-width: 0;
56
58
  font-size: 0.8125rem;
@@ -70,7 +72,7 @@
70
72
  @container (max-width: 32rem) {
71
73
  .k-description-list-inline .k-description-item {
72
74
  grid-template-columns: minmax(0, 1fr);
73
- gap: 0.25rem;
75
+ gap: 0.125rem;
74
76
  }
75
77
 
76
78
  .k-description-list-grid {
@@ -81,7 +83,7 @@
81
83
  @media (max-width: 559px) {
82
84
  .k-description-list-inline .k-description-item {
83
85
  grid-template-columns: minmax(0, 1fr);
84
- gap: 0.25rem;
86
+ gap: 0.125rem;
85
87
  }
86
88
 
87
89
  .k-description-list-grid {
@@ -71,7 +71,6 @@
71
71
  }
72
72
 
73
73
  .k-filter-pill[aria-pressed='true'] .k-filter-pill-check > .k-icon {
74
- animation: k-icon-pop 300ms var(--k-ease-spring);
75
74
  }
76
75
 
77
76
  .k-filter-pill-count {
@@ -94,7 +94,6 @@
94
94
  border-color: var(--k-field-line);
95
95
  box-shadow: var(--k-shadow-xs);
96
96
  color: var(--k-text);
97
- animation: k-icon-pop 300ms var(--k-ease-spring);
98
97
  }
99
98
 
100
99
  .k-pagination-page:disabled {
@@ -3,6 +3,10 @@
3
3
  min-width: 0;
4
4
  }
5
5
 
6
+ .k-selection-bar:not(.is-visible) {
7
+ display: contents;
8
+ }
9
+
6
10
  .k-selection-bar-sticky {
7
11
  position: sticky;
8
12
  top: 0;
@@ -57,11 +57,7 @@
57
57
  background: var(--k-subtle);
58
58
  box-shadow: inset 0 0 0 1px var(--k-line);
59
59
  color: var(--k-accent-text);
60
- transition: transform var(--k-duration-lg) var(--k-ease-spring);
61
- }
62
-
63
- .k-stat.is-interactive:hover .k-stat-icon {
64
- transform: scale(1.08) rotate(-4deg);
60
+ transition: transform var(--k-duration-lg) var(--k-ease-out);
65
61
  }
66
62
 
67
63
  .k-stat-body {
@@ -141,7 +137,6 @@
141
137
 
142
138
  .k-stat-delta-icon {
143
139
  stroke-width: 2.25;
144
- animation: k-icon-pop 400ms var(--k-ease-spring) 200ms backwards;
145
140
  }
146
141
 
147
142
  .k-stat-delta.is-up .k-stat-delta-icon {
@@ -111,7 +111,7 @@
111
111
  transition:
112
112
  opacity var(--k-duration) var(--k-ease),
113
113
  color var(--k-duration) var(--k-ease),
114
- transform var(--k-duration-lg) var(--k-ease-spring);
114
+ transform var(--k-duration-lg) var(--k-ease-out);
115
115
  }
116
116
 
117
117
  .k-table-sort:hover .k-table-sort-icon,
@@ -122,7 +122,6 @@
122
122
 
123
123
  .k-table-th.is-sorted .k-table-sort-icon {
124
124
  color: var(--k-accent-text);
125
- animation: k-icon-pop 300ms var(--k-ease-spring);
126
125
  }
127
126
 
128
127
  .k-table-th.is-align-end .k-table-sort {
@@ -108,9 +108,6 @@
108
108
  }
109
109
 
110
110
  .k-tag-remove > .k-icon {
111
- transition: transform var(--k-duration-lg) var(--k-ease-spring);
111
+ transition: transform var(--k-duration-lg) var(--k-ease-out);
112
112
  }
113
113
 
114
- .k-tag-remove:hover:not(:disabled) > .k-icon {
115
- transform: rotate(90deg);
116
- }
@@ -103,6 +103,7 @@
103
103
 
104
104
  .k-timeline-description {
105
105
  font-size: 0.8125rem;
106
+ line-height: 1.4;
106
107
  color: var(--k-text-muted);
107
108
  }
108
109
 
@@ -107,11 +107,18 @@
107
107
  overflow: hidden;
108
108
  text-overflow: ellipsis;
109
109
  white-space: nowrap;
110
- font-family: var(--k-font-mono);
111
110
  font-size: 0.75rem;
112
111
  color: var(--k-text-dimmed);
113
112
  }
114
113
 
114
+ .k-tree-description-mono {
115
+ font-family: var(--k-font-mono);
116
+ }
117
+
118
+ .k-tree-description-text {
119
+ color: var(--k-text-muted);
120
+ }
121
+
115
122
  .k-tree-meta {
116
123
  flex-shrink: 0;
117
124
  font-size: 0.75rem;
@@ -137,7 +144,6 @@
137
144
 
138
145
  .k-tree-check > .k-icon {
139
146
  stroke-width: 2.25;
140
- animation: k-icon-pop 300ms var(--k-ease-spring);
141
147
  }
142
148
 
143
149
  .k-tree-empty {
@@ -70,7 +70,6 @@
70
70
  }
71
71
 
72
72
  .k-alert-icon > .k-icon {
73
- animation: k-icon-pop var(--k-duration-xl) var(--k-ease-spring) 120ms backwards;
74
73
  }
75
74
 
76
75
  .k-alert-body {
@@ -79,6 +78,7 @@
79
78
  flex-direction: column;
80
79
  gap: 0.125rem;
81
80
  min-width: 0;
81
+ line-height: 1.4;
82
82
  padding-top: 0.0625rem;
83
83
  }
84
84
 
@@ -4,7 +4,7 @@
4
4
  display: flex;
5
5
  flex-direction: column;
6
6
  align-items: center;
7
- gap: 0.375rem;
7
+ gap: 0.125rem;
8
8
  padding: 3.5rem 1.5rem;
9
9
  overflow: hidden;
10
10
  text-align: center;
@@ -34,7 +34,7 @@
34
34
  }
35
35
 
36
36
  .k-empty-sm {
37
- gap: 0.25rem;
37
+ gap: 0.125rem;
38
38
  padding: 2rem 1rem;
39
39
  }
40
40
 
@@ -44,27 +44,27 @@
44
44
  place-items: center;
45
45
  width: 2.75rem;
46
46
  height: 2.75rem;
47
- margin-bottom: 0.625rem;
47
+ margin-bottom: 0.875rem;
48
48
  border-radius: var(--k-radius-lg);
49
49
  background: var(--k-surface);
50
50
  box-shadow:
51
51
  var(--k-shadow-raised),
52
52
  0 6px 16px -6px var(--k-shadow-tint-strong);
53
53
  color: var(--k-text-muted);
54
- animation: k-float 4s ease-in-out infinite;
55
54
  }
56
55
 
57
56
  .k-empty-sm .k-empty-icon {
58
57
  --k-icon-size: 1rem;
59
58
  width: 2.25rem;
60
59
  height: 2.25rem;
61
- margin-bottom: 0.375rem;
60
+ margin-bottom: 0.5rem;
62
61
  border-radius: var(--k-radius-md);
63
62
  }
64
63
 
65
64
  .k-empty-title {
66
65
  font-size: 0.9375rem;
67
66
  font-weight: 600;
67
+ line-height: 1.3;
68
68
  color: var(--k-text);
69
69
  }
70
70
 
@@ -75,6 +75,7 @@
75
75
  .k-empty-description {
76
76
  max-width: 28rem;
77
77
  font-size: 0.8125rem;
78
+ line-height: 1.4;
78
79
  color: var(--k-text-muted);
79
80
  }
80
81
 
@@ -94,7 +94,7 @@
94
94
  background: var(--k-swatch);
95
95
  box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--k-text) 14%, transparent);
96
96
  transition:
97
- scale var(--k-duration-lg) var(--k-ease-spring),
97
+ scale var(--k-duration-lg) var(--k-ease-out),
98
98
  box-shadow var(--k-duration) var(--k-ease);
99
99
  }
100
100
 
@@ -221,7 +221,6 @@
221
221
  .k-combobox-option-selected {
222
222
  --k-icon-size: 0.875rem;
223
223
  color: var(--k-accent-text);
224
- animation: k-icon-pop var(--k-duration-lg) var(--k-ease-spring);
225
224
  }
226
225
 
227
226
  .k-combobox-check {
@@ -31,7 +31,7 @@
31
31
  color: var(--k-text-dimmed);
32
32
  transition:
33
33
  color var(--k-duration) var(--k-ease),
34
- transform var(--k-duration-lg) var(--k-ease-spring);
34
+ transform var(--k-duration-lg) var(--k-ease-out);
35
35
  }
36
36
 
37
37
  .k-date-picker-trigger:hover:not(:disabled) .k-date-picker-icon {
@@ -78,7 +78,7 @@
78
78
  box-shadow: var(--k-shadow-raised);
79
79
  color: var(--k-text-muted);
80
80
  transition:
81
- transform var(--k-duration-lg) var(--k-ease-spring),
81
+ transform var(--k-duration-lg) var(--k-ease-out),
82
82
  color var(--k-duration) var(--k-ease);
83
83
  }
84
84
 
@@ -120,6 +120,14 @@
120
120
  color: var(--k-text-muted);
121
121
  }
122
122
 
123
+ .k-file-input-actions {
124
+ display: flex;
125
+ flex-wrap: wrap;
126
+ align-items: center;
127
+ justify-content: center;
128
+ gap: 0.375rem;
129
+ }
130
+
123
131
  .k-file-input-native {
124
132
  position: absolute;
125
133
  width: 1px;
@@ -67,7 +67,7 @@
67
67
  }
68
68
 
69
69
  .k-number-input-step > .k-icon {
70
- transition: transform var(--k-duration-lg) var(--k-ease-spring);
70
+ transition: transform var(--k-duration-lg) var(--k-ease-out);
71
71
  }
72
72
 
73
73
  .k-number-input-step:hover:not(:disabled) {
@@ -35,7 +35,7 @@
35
35
  }
36
36
 
37
37
  .k-password-input-action > .k-icon {
38
- transition: transform var(--k-duration-lg) var(--k-ease-spring);
38
+ transition: transform var(--k-duration) var(--k-ease-out);
39
39
  }
40
40
 
41
41
  .k-password-input-action:hover:not(:disabled) {
@@ -47,10 +47,6 @@
47
47
  transform: scale(0.85);
48
48
  }
49
49
 
50
- .k-password-input-action:hover:not(:disabled) > .k-icon[data-icon='arrow-path'] {
51
- transform: rotate(60deg);
52
- }
53
-
54
50
  .k-password-input-action:disabled {
55
51
  opacity: 0.4;
56
52
  cursor: not-allowed;
@@ -82,7 +82,6 @@
82
82
 
83
83
  .k-switch-thumb > .k-icon {
84
84
  stroke-width: 2.5;
85
- animation: k-icon-spin var(--k-duration-lg) var(--k-ease-spring);
86
85
  }
87
86
 
88
87
  .k-switch-track[aria-checked='true'] .k-switch-thumb {
@@ -4,11 +4,15 @@
4
4
  min-width: 0;
5
5
  }
6
6
 
7
- .k-accordion-card {
7
+ .k-accordion-card,
8
+ .k-accordion-outline {
8
9
  overflow: hidden;
9
10
  border: 1px solid var(--k-line);
10
11
  border-radius: var(--k-radius-lg);
11
12
  background: var(--k-surface);
13
+ }
14
+
15
+ .k-accordion-card {
12
16
  box-shadow: var(--k-shadow-xs);
13
17
  }
14
18
 
@@ -32,6 +36,7 @@
32
36
  }
33
37
 
34
38
  .k-accordion-card .k-accordion-item + .k-accordion-item,
39
+ .k-accordion-outline .k-accordion-item + .k-accordion-item,
35
40
  .k-accordion-plain .k-accordion-item + .k-accordion-item {
36
41
  border-top: 1px solid var(--k-line);
37
42
  }
@@ -95,7 +100,7 @@
95
100
  .k-accordion-description {
96
101
  font-size: 0.75rem;
97
102
  font-weight: 400;
98
- line-height: 1.45;
103
+ line-height: 1.4;
99
104
  color: var(--k-text-muted);
100
105
  }
101
106
 
@@ -47,6 +47,10 @@
47
47
  padding: var(--k-card-pad) var(--k-card-pad) 0;
48
48
  }
49
49
 
50
+ .k-card-header:last-child {
51
+ padding-bottom: var(--k-card-pad);
52
+ }
53
+
50
54
  .k-card-pad-none > .k-card-header {
51
55
  padding: 0.875rem 1.125rem;
52
56
  border-bottom: 1px solid var(--k-line);
@@ -63,7 +67,7 @@
63
67
  background: var(--k-subtle);
64
68
  box-shadow: inset 0 0 0 1px var(--k-line);
65
69
  color: var(--k-accent-text);
66
- transition: transform var(--k-duration-lg) var(--k-ease-spring);
70
+ transition: transform var(--k-duration-lg) var(--k-ease-out);
67
71
  }
68
72
 
69
73
  .k-card-heading {
@@ -74,15 +78,21 @@
74
78
  min-width: 0;
75
79
  }
76
80
 
81
+ .k-card-icon + .k-card-heading {
82
+ justify-content: center;
83
+ min-height: 2rem;
84
+ }
85
+
77
86
  .k-card-title {
78
87
  font-size: 0.9375rem;
79
88
  font-weight: 600;
80
- line-height: 1.35;
89
+ line-height: 1.3;
81
90
  color: var(--k-text);
82
91
  }
83
92
 
84
93
  .k-card-description {
85
94
  font-size: 0.8125rem;
95
+ line-height: 1.4;
86
96
  color: var(--k-text-muted);
87
97
  }
88
98
 
@@ -102,7 +112,7 @@
102
112
  }
103
113
 
104
114
  .k-card-header + .k-card-body {
105
- padding-top: 0.875rem;
115
+ padding-top: min(0.875rem, var(--k-card-pad));
106
116
  }
107
117
 
108
118
  .k-card-pad-none > .k-card-header + .k-card-body {
@@ -154,10 +164,6 @@
154
164
  box-shadow: var(--k-shadow-sm);
155
165
  }
156
166
 
157
- .k-card.is-interactive:hover .k-card-icon {
158
- transform: scale(1.08) rotate(-4deg);
159
- }
160
-
161
167
  .k-card.is-interactive:active {
162
168
  scale: 0.99;
163
169
  }
@@ -14,14 +14,14 @@
14
14
  grid-area: 1 / 1;
15
15
  transition:
16
16
  opacity var(--k-duration) var(--k-ease),
17
- transform var(--k-duration-lg) var(--k-ease-spring);
17
+ transform var(--k-duration-lg) var(--k-ease-out);
18
18
  }
19
19
 
20
20
  .k-copy-icon.is-done {
21
21
  stroke-width: 2;
22
22
  color: var(--k-success);
23
23
  opacity: 0;
24
- transform: scale(0.4) rotate(-45deg);
24
+ transform: scale(0.6);
25
25
  }
26
26
 
27
27
  .k-copy-button.is-copied .k-copy-icon.is-idle {
@@ -47,7 +47,7 @@
47
47
  color: var(--k-text-dimmed);
48
48
  transition:
49
49
  color var(--k-duration) var(--k-ease),
50
- transform var(--k-duration-lg) var(--k-ease-spring);
50
+ transform var(--k-duration-lg) var(--k-ease-out);
51
51
  }
52
52
 
53
53
  .k-navlink:hover .k-navlink-icon {
@@ -57,7 +57,6 @@
57
57
  .k-navlink.is-active .k-navlink-icon,
58
58
  .k-navlink[aria-current='page'] .k-navlink-icon {
59
59
  color: var(--k-accent-text);
60
- animation: k-icon-pop 360ms var(--k-ease-spring);
61
60
  }
62
61
 
63
62
  .k-navlink-label {
@@ -45,7 +45,7 @@
45
45
  .k-page-header-text {
46
46
  display: flex;
47
47
  flex-direction: column;
48
- gap: 0.1875rem;
48
+ gap: 0.125rem;
49
49
  min-width: 0;
50
50
  }
51
51
 
@@ -67,6 +67,7 @@
67
67
  .k-page-header-description {
68
68
  max-width: 44rem;
69
69
  font-size: 0.8125rem;
70
+ line-height: 1.4;
70
71
  color: var(--k-text-muted);
71
72
  }
72
73
 
@@ -20,7 +20,7 @@
20
20
  --k-icon-size: 0.875rem;
21
21
  flex: none;
22
22
  color: var(--k-text-dimmed);
23
- transition: transform var(--k-duration-lg) var(--k-ease-spring);
23
+ transition: transform var(--k-duration-lg) var(--k-ease-out);
24
24
  }
25
25
 
26
26
  .k-navgroup.is-open .k-navgroup-chevron {
@@ -24,7 +24,7 @@
24
24
  }
25
25
 
26
26
  .k-sidebar-collapse > .k-icon {
27
- transition: transform var(--k-duration-lg) var(--k-ease-spring);
27
+ transition: transform var(--k-duration-lg) var(--k-ease-out);
28
28
  }
29
29
 
30
30
  .k-sidebar-nav {
@@ -23,6 +23,27 @@
23
23
  flex: 1;
24
24
  }
25
25
 
26
+ .k-tabs.is-stretch {
27
+ flex: 1;
28
+ min-height: 0;
29
+ }
30
+
31
+ .k-tabs.is-stretch > .k-tabs-panel {
32
+ display: flex;
33
+ flex: 1;
34
+ flex-direction: column;
35
+ min-height: 0;
36
+ }
37
+
38
+ .k-tabs.is-inset {
39
+ gap: 0;
40
+ }
41
+
42
+ .k-tabs.is-inset > .k-tabs-list {
43
+ max-width: calc(100% - 1.75rem);
44
+ margin: 0.75rem 0.875rem 0;
45
+ }
46
+
26
47
  .k-tab {
27
48
  --k-icon-size: 0.9375rem;
28
49
  position: relative;
@@ -57,12 +78,11 @@
57
78
  }
58
79
 
59
80
  .k-tab-icon {
60
- transition: transform var(--k-duration-lg) var(--k-ease-spring);
81
+ transition: transform var(--k-duration-lg) var(--k-ease-out);
61
82
  }
62
83
 
63
84
  .k-tab[aria-selected='true'] .k-tab-icon {
64
85
  color: var(--k-accent-text);
65
- animation: k-icon-pop 360ms var(--k-ease-spring);
66
86
  }
67
87
 
68
88
  .k-tab-badge {
@@ -62,11 +62,10 @@
62
62
  }
63
63
 
64
64
  .k-theme-switch-icon {
65
- transition: transform var(--k-duration-lg) var(--k-ease-spring);
65
+ transition: transform var(--k-duration-lg) var(--k-ease-out);
66
66
  }
67
67
 
68
68
  .k-theme-switch-option.is-active .k-theme-switch-icon {
69
- animation: k-icon-spin var(--k-duration-xl) var(--k-ease-spring);
70
69
  }
71
70
 
72
71
  .k-theme-switch-sm .k-theme-switch-option {
@@ -75,5 +74,4 @@
75
74
  }
76
75
 
77
76
  .k-theme-cycle-icon {
78
- animation: k-icon-spin var(--k-duration-xl) var(--k-ease-spring);
79
77
  }
@@ -148,7 +148,7 @@
148
148
  color: var(--k-text-dimmed);
149
149
  transition:
150
150
  color var(--k-duration) var(--k-ease),
151
- transform var(--k-duration-lg) var(--k-ease-spring);
151
+ transform var(--k-duration-lg) var(--k-ease-out);
152
152
  }
153
153
 
154
154
  .k-command-option.is-active .k-command-option-icon {
@@ -24,7 +24,6 @@
24
24
  border-radius: var(--k-radius-full);
25
25
  color: var(--k-confirm-tone);
26
26
  background: color-mix(in oklab, var(--k-confirm-tone) 12%, transparent);
27
- animation: k-icon-pop var(--k-duration-xl) var(--k-ease-spring) 120ms;
28
27
  }
29
28
 
30
29
  .k-confirm-danger .k-confirm-icon {
@@ -14,7 +14,9 @@
14
14
 
15
15
  .k-drawer-bottom {
16
16
  flex-direction: column;
17
+ align-items: center;
17
18
  justify-content: flex-end;
19
+ padding: 1rem 1rem 0;
18
20
  }
19
21
 
20
22
  .k-drawer-panel {
@@ -50,10 +52,12 @@
50
52
  }
51
53
 
52
54
  .k-drawer-bottom > .k-drawer-panel {
53
- --k-drawer-hidden: translateY(calc(100% + 1rem));
54
- max-width: none;
55
+ --k-drawer-hidden: translateY(100%);
56
+ max-width: var(--k-drawer-sheet-width, 50rem);
55
57
  height: auto;
56
58
  max-height: var(--k-drawer-size);
59
+ padding-bottom: env(safe-area-inset-bottom);
60
+ border-radius: var(--k-radius-xl) var(--k-radius-xl) 0 0;
57
61
  }
58
62
 
59
63
  .k-drawer-sm > .k-drawer-panel {
@@ -74,6 +78,7 @@
74
78
 
75
79
  .k-drawer-bottom.k-drawer-sm > .k-drawer-panel {
76
80
  --k-drawer-size: 30dvh;
81
+ --k-drawer-sheet-width: 32rem;
77
82
  }
78
83
 
79
84
  .k-drawer-bottom.k-drawer-md > .k-drawer-panel {
@@ -89,6 +94,14 @@
89
94
  --k-drawer-size: 100%;
90
95
  }
91
96
 
97
+ .k-drawer-bottom.k-drawer-xl > .k-drawer-panel {
98
+ --k-drawer-sheet-width: 64rem;
99
+ }
100
+
101
+ .k-drawer-bottom.k-drawer-full > .k-drawer-panel {
102
+ --k-drawer-sheet-width: none;
103
+ }
104
+
92
105
  .k-drawer-header {
93
106
  align-items: center;
94
107
  min-height: 3.5rem;
@@ -118,4 +131,12 @@
118
131
  .k-drawer-right > .k-drawer-panel {
119
132
  max-width: calc(100% - 2rem);
120
133
  }
134
+
135
+ .k-drawer.k-drawer-bottom {
136
+ padding: 2rem 0 0;
137
+ }
138
+
139
+ .k-drawer-bottom > .k-drawer-panel {
140
+ max-width: none;
141
+ }
121
142
  }