jky-component-lib 0.0.65 → 0.0.67

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 (47) hide show
  1. package/dist/es/components.d.ts +1 -0
  2. package/dist/es/components.js +4 -1
  3. package/dist/es/index.js +15 -0
  4. package/dist/es/package.json.js +1 -1
  5. package/dist/es/page-header/PageHeader.vue.js +2 -2
  6. package/dist/es/page-header/PopoverMenu.vue.js +2 -2
  7. package/dist/es/style.css +146 -0
  8. package/dist/es/styles.css +1 -1
  9. package/dist/es/tabs/TabContent.vue.d.ts +16 -0
  10. package/dist/es/tabs/TabContent.vue.js +65 -0
  11. package/dist/es/tabs/TabContent.vue3.js +5 -0
  12. package/dist/es/tabs/Tabs.vue.d.ts +46 -0
  13. package/dist/es/tabs/Tabs.vue.js +275 -0
  14. package/dist/es/tabs/Tabs.vue3.js +5 -0
  15. package/dist/es/tabs/index.d.ts +9 -0
  16. package/dist/es/tabs/index.js +8 -0
  17. package/dist/es/tabs/routeListener.d.ts +19 -0
  18. package/dist/es/tabs/routeListener.js +26 -0
  19. package/dist/es/tabs/style.css +29 -0
  20. package/dist/es/tabs/useTabs.d.ts +27 -0
  21. package/dist/es/tabs/useTabs.js +59 -0
  22. package/dist/es/tabs/useTabsStore.d.ts +53 -0
  23. package/dist/es/tabs/useTabsStore.js +208 -0
  24. package/dist/lib/components.d.ts +1 -0
  25. package/dist/lib/components.js +4 -1
  26. package/dist/lib/index.js +15 -0
  27. package/dist/lib/package.json.js +1 -1
  28. package/dist/lib/page-header/PageHeader.vue.js +3 -3
  29. package/dist/lib/page-header/PopoverMenu.vue.js +2 -2
  30. package/dist/lib/style.css +146 -0
  31. package/dist/lib/styles.css +1 -1
  32. package/dist/lib/tabs/TabContent.vue.d.ts +16 -0
  33. package/dist/lib/tabs/TabContent.vue.js +65 -0
  34. package/dist/lib/tabs/TabContent.vue3.js +5 -0
  35. package/dist/lib/tabs/Tabs.vue.d.ts +46 -0
  36. package/dist/lib/tabs/Tabs.vue.js +275 -0
  37. package/dist/lib/tabs/Tabs.vue3.js +5 -0
  38. package/dist/lib/tabs/index.d.ts +9 -0
  39. package/dist/lib/tabs/index.js +8 -0
  40. package/dist/lib/tabs/routeListener.d.ts +19 -0
  41. package/dist/lib/tabs/routeListener.js +26 -0
  42. package/dist/lib/tabs/style.css +29 -0
  43. package/dist/lib/tabs/useTabs.d.ts +27 -0
  44. package/dist/lib/tabs/useTabs.js +59 -0
  45. package/dist/lib/tabs/useTabsStore.d.ts +53 -0
  46. package/dist/lib/tabs/useTabsStore.js +208 -0
  47. package/package.json +10 -2
@@ -0,0 +1,208 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ import { defineStore } from "pinia";
18
+ import { ref, shallowRef, computed, inject } from "vue";
19
+ const PERSIST_KEY_SYMBOL = Symbol("jky-tabs-persist-key");
20
+ const DEFAULT_PERSIST_KEY = "jky-tabs-state";
21
+ function getPersistConfig(persist, persistKey) {
22
+ const injectedPersistKey = inject(PERSIST_KEY_SYMBOL, void 0);
23
+ const finalPersistKey = injectedPersistKey || persistKey || DEFAULT_PERSIST_KEY;
24
+ return {
25
+ enabled: persist !== void 0 ? persist : false,
26
+ key: finalPersistKey
27
+ };
28
+ }
29
+ function loadFromStorage(key) {
30
+ try {
31
+ const stored = localStorage.getItem(key);
32
+ if (stored) {
33
+ return JSON.parse(stored);
34
+ }
35
+ } catch (error) {
36
+ console.warn("Failed to load tabs from storage:", error);
37
+ }
38
+ return null;
39
+ }
40
+ function saveToStorage(key, data) {
41
+ try {
42
+ localStorage.setItem(key, JSON.stringify(data));
43
+ } catch (error) {
44
+ console.warn("Failed to save tabs to storage:", error);
45
+ }
46
+ }
47
+ function createTabsStore(persist, persistKey) {
48
+ const persistConfig = getPersistConfig(persist, persistKey);
49
+ const initialData = persistConfig.enabled ? loadFromStorage(persistConfig.key) : null;
50
+ const store = defineStore("jky-tabs", () => {
51
+ const tabList = ref((initialData == null ? void 0 : initialData.tabList) || []);
52
+ const activeTab = ref((initialData == null ? void 0 : initialData.activeTab) || "");
53
+ const cacheTabs = shallowRef((initialData == null ? void 0 : initialData.cacheTabs) || []);
54
+ const closedTabs = shallowRef((initialData == null ? void 0 : initialData.closedTabs) || []);
55
+ const cacheSet = computed(() => new Set(cacheTabs.value));
56
+ const closedSet = computed(() => new Set(closedTabs.value));
57
+ function persistState() {
58
+ if (!persistConfig.enabled)
59
+ return;
60
+ saveToStorage(persistConfig.key, {
61
+ tabList: tabList.value,
62
+ activeTab: activeTab.value,
63
+ cacheTabs: cacheTabs.value,
64
+ closedTabs: closedTabs.value
65
+ });
66
+ }
67
+ function addTab(tab) {
68
+ const index = tabList.value.findIndex((t) => t.name === tab.name);
69
+ if (index !== -1) {
70
+ tabList.value[index] = __spreadValues(__spreadValues({}, tabList.value[index]), tab);
71
+ } else {
72
+ tabList.value.push(tab);
73
+ }
74
+ persistState();
75
+ }
76
+ function updateTab(name, tab) {
77
+ const index = tabList.value.findIndex((t) => t.name === name);
78
+ if (index !== -1) {
79
+ tabList.value[index] = __spreadValues(__spreadValues({}, tabList.value[index]), tab);
80
+ persistState();
81
+ }
82
+ }
83
+ function removeTab(name) {
84
+ const index = tabList.value.findIndex((t) => t.name === name);
85
+ if (index !== -1) {
86
+ tabList.value.splice(index, 1);
87
+ removeCache(name);
88
+ if (activeTab.value === name && tabList.value.length > 0) {
89
+ const nextTab = tabList.value[index] || tabList.value[index - 1];
90
+ if (nextTab) {
91
+ activeTab.value = nextTab.name;
92
+ }
93
+ }
94
+ persistState();
95
+ }
96
+ }
97
+ function setActiveTab(name) {
98
+ activeTab.value = name;
99
+ persistState();
100
+ }
101
+ function addCache(name) {
102
+ if (!cacheSet.value.has(name)) {
103
+ cacheTabs.value = [...cacheTabs.value, name];
104
+ persistState();
105
+ }
106
+ }
107
+ function removeCache(name) {
108
+ cacheTabs.value = cacheTabs.value.filter((t) => t !== name);
109
+ persistState();
110
+ }
111
+ function bulkRemove(names) {
112
+ tabList.value = tabList.value.filter((tab) => !names.includes(tab.name));
113
+ names.forEach((name) => removeCache(name));
114
+ persistState();
115
+ }
116
+ function closeLeft(name) {
117
+ const index = tabList.value.findIndex((t) => t.name === name);
118
+ if (index > 0) {
119
+ const leftTabs = tabList.value.slice(0, index);
120
+ const removableTabs = leftTabs.filter((tab) => !tab.affix);
121
+ bulkRemove(removableTabs.map((tab) => tab.name));
122
+ }
123
+ }
124
+ function closeRight(name) {
125
+ const index = tabList.value.findIndex((t) => t.name === name);
126
+ if (index >= 0 && index < tabList.value.length - 1) {
127
+ const rightTabs = tabList.value.slice(index + 1);
128
+ const removableTabs = rightTabs.filter((tab) => !tab.affix);
129
+ bulkRemove(removableTabs.map((tab) => tab.name));
130
+ }
131
+ }
132
+ function closeOther(name) {
133
+ const removableTabs = tabList.value.filter(
134
+ (tab) => tab.name !== name && !tab.affix
135
+ );
136
+ bulkRemove(removableTabs.map((tab) => tab.name));
137
+ }
138
+ function closeAll() {
139
+ const removableTabs = tabList.value.filter((tab) => !tab.affix);
140
+ bulkRemove(removableTabs.map((tab) => tab.name));
141
+ }
142
+ function refresh(name) {
143
+ removeCache(name);
144
+ setTimeout(() => {
145
+ addCache(name);
146
+ }, 0);
147
+ }
148
+ function getTabList() {
149
+ return [...tabList.value];
150
+ }
151
+ function getCacheTabs() {
152
+ return [...cacheTabs.value];
153
+ }
154
+ function isClosed(name) {
155
+ return closedSet.value.has(name);
156
+ }
157
+ function isCached(name) {
158
+ return cacheSet.value.has(name);
159
+ }
160
+ function reset() {
161
+ tabList.value = [];
162
+ activeTab.value = "";
163
+ cacheTabs.value = [];
164
+ closedTabs.value = [];
165
+ persistState();
166
+ }
167
+ return {
168
+ tabList,
169
+ activeTab,
170
+ cacheTabs,
171
+ closedTabs,
172
+ addTab,
173
+ updateTab,
174
+ removeTab,
175
+ setActiveTab,
176
+ addCache,
177
+ removeCache,
178
+ bulkRemove,
179
+ closeLeft,
180
+ closeRight,
181
+ closeOther,
182
+ closeAll,
183
+ refresh,
184
+ getTabList,
185
+ getCacheTabs,
186
+ isClosed,
187
+ isCached,
188
+ reset
189
+ };
190
+ });
191
+ return store();
192
+ }
193
+ const storeInstances = /* @__PURE__ */ new Map();
194
+ function useTabsStore(persist, persistKey) {
195
+ const key = persistKey || DEFAULT_PERSIST_KEY;
196
+ if (!storeInstances.has(key)) {
197
+ storeInstances.set(key, () => createTabsStore(persist, persistKey));
198
+ }
199
+ return storeInstances.get(key)();
200
+ }
201
+ function resetTabsStore() {
202
+ storeInstances.clear();
203
+ }
204
+ export {
205
+ createTabsStore,
206
+ resetTabsStore,
207
+ useTabsStore
208
+ };
@@ -10,5 +10,6 @@ export * from './page-layout';
10
10
  export * from './page-table';
11
11
  export * from './rich-editor';
12
12
  export * from './say-hello';
13
+ export * from './tabs';
13
14
  export declare const components: Plugin[];
14
15
  export default components;
@@ -11,6 +11,7 @@ const index$7 = require("./page-layout/index.js");
11
11
  const index$8 = require("./page-table/index.js");
12
12
  const index$9 = require("./rich-editor/index.js");
13
13
  const index$a = require("./say-hello/index.js");
14
+ const index$b = require("./tabs/index.js");
14
15
  const components = [
15
16
  index$a.JkySayHello,
16
17
  index$1.JkyButton,
@@ -22,7 +23,8 @@ const components = [
22
23
  index.JkyAddInput,
23
24
  index$9.JkyRichEditor,
24
25
  index$8.JkyPageTable,
25
- index$7.JkyPageLayout
26
+ index$7.JkyPageLayout,
27
+ index$b.JkyTabs
26
28
  ];
27
29
  exports.JkyAddInput = index.JkyAddInput;
28
30
  exports.JkyButton = index$1.JkyButton;
@@ -35,4 +37,5 @@ exports.JkyPageLayout = index$7.JkyPageLayout;
35
37
  exports.JkyPageTable = index$8.JkyPageTable;
36
38
  exports.JkyRichEditor = index$9.JkyRichEditor;
37
39
  exports.JkySayHello = index$a.JkySayHello;
40
+ exports.JkyTabs = index$b.JkyTabs;
38
41
  exports.components = components;
package/dist/lib/index.js CHANGED
@@ -4,6 +4,8 @@ const components = require("./components.js");
4
4
  const installer$1 = require("./utils/installer.js");
5
5
  ;/* empty css */
6
6
  const resolver = require("./resolver.js");
7
+ const TabContent_vue_vue_type_script_setup_true_lang = require("./tabs/TabContent.vue.js");
8
+ ;/* empty css */
7
9
  const index = require("./add-input/index.js");
8
10
  const index$1 = require("./button/index.js");
9
11
  const index$2 = require("./button-nav/index.js");
@@ -15,11 +17,16 @@ const index$7 = require("./page-layout/index.js");
15
17
  const index$8 = require("./page-table/index.js");
16
18
  const index$9 = require("./rich-editor/index.js");
17
19
  const index$a = require("./say-hello/index.js");
20
+ const index$b = require("./tabs/index.js");
21
+ const routeListener = require("./tabs/routeListener.js");
22
+ const useTabsStore = require("./tabs/useTabsStore.js");
23
+ const useTabs = require("./tabs/useTabs.js");
18
24
  const installer = installer$1.createInstaller(components.components);
19
25
  const install = installer.install;
20
26
  const version = installer.version;
21
27
  exports.components = components.components;
22
28
  exports.JkyComponentLibResolver = resolver.JkyComponentLibResolver;
29
+ exports.JkyTabContent = TabContent_vue_vue_type_script_setup_true_lang.default;
23
30
  exports.JkyAddInput = index.JkyAddInput;
24
31
  exports.JkyButton = index$1.JkyButton;
25
32
  exports.JkyButtonNav = index$2.JkyButtonNav;
@@ -31,6 +38,14 @@ exports.JkyPageLayout = index$7.JkyPageLayout;
31
38
  exports.JkyPageTable = index$8.JkyPageTable;
32
39
  exports.JkyRichEditor = index$9.JkyRichEditor;
33
40
  exports.JkySayHello = index$a.JkySayHello;
41
+ exports.JkyTabs = index$b.JkyTabs;
42
+ exports.clearRouteListeners = routeListener.clearRouteListeners;
43
+ exports.emitRouteChange = routeListener.emitRouteChange;
44
+ exports.onRouteChange = routeListener.onRouteChange;
45
+ exports.createTabsStore = useTabsStore.createTabsStore;
46
+ exports.resetTabsStore = useTabsStore.resetTabsStore;
47
+ exports.useTabsStore = useTabsStore.useTabsStore;
48
+ exports.useTabs = useTabs.useTabs;
34
49
  exports.default = installer;
35
50
  exports.install = install;
36
51
  exports.version = version;
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const version = "0.0.65";
3
+ const version = "0.0.67";
4
4
  exports.version = version;
@@ -76,13 +76,13 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadValu
76
76
  function handleCommand(command) {
77
77
  emit("command", command);
78
78
  }
79
- const heightValue = computed(() => {
79
+ const heightValue = vue.computed(() => {
80
80
  if (typeof props.height === "number") {
81
81
  return `${props.height}px`;
82
82
  }
83
83
  return props.height;
84
84
  });
85
- const backgroundStyle = computed(() => {
85
+ const backgroundStyle = vue.computed(() => {
86
86
  const style = {};
87
87
  if (props.backgroundImage) {
88
88
  style.backgroundImage = `url(${props.backgroundImage})`;
@@ -98,7 +98,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadValu
98
98
  var _a, _b, _c, _d;
99
99
  return vue.openBlock(), vue.createElementBlock("header", {
100
100
  class: "jky-page-header",
101
- style: vue.normalizeStyle([vue.unref(backgroundStyle), { height: vue.unref(heightValue) }])
101
+ style: vue.normalizeStyle([backgroundStyle.value, { height: heightValue.value }])
102
102
  }, [
103
103
  vue.createElementVNode("div", _hoisted_1, [
104
104
  __props.showPopover && ((_b = (_a = __props.popover) == null ? void 0 : _a.menus) == null ? void 0 : _b.length) ? (vue.openBlock(), vue.createBlock(PopoverMenu_vue_vue_type_script_setup_true_lang.default, vue.normalizeProps(vue.mergeProps({ key: 0 }, __props.popover)), null, 16)) : vue.createCommentVNode("", true),
@@ -29,7 +29,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
29
29
  },
30
30
  setup(__props) {
31
31
  const props = __props;
32
- const popoverIndex = ref("");
32
+ const popoverIndex = vue.ref("");
33
33
  function onPopoverButtonClick(item) {
34
34
  var _a;
35
35
  if (props.highlightCurrent) {
@@ -61,7 +61,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
61
61
  key: item.value,
62
62
  disabled: item.disabled,
63
63
  class: vue.normalizeClass(["w-fit! h-fit! ml-0!", [__props.elButtonClass, item.elButtonClass]]),
64
- type: vue.unref(popoverIndex) === item.value ? "primary" : __props.elButtonType || "default",
64
+ type: popoverIndex.value === item.value ? "primary" : __props.elButtonType || "default",
65
65
  onClick: ($event) => onPopoverButtonClick(item)
66
66
  }, {
67
67
  default: vue.withCtx(() => [
@@ -61,13 +61,21 @@
61
61
  "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
62
62
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
63
63
  "Courier New", monospace;
64
+ --color-red-100: oklch(93.6% .032 17.717);
64
65
  --color-red-500: oklch(63.7% .237 25.331);
66
+ --color-red-700: oklch(50.5% .213 27.518);
67
+ --color-red-800: oklch(44.4% .177 26.899);
68
+ --color-orange-100: oklch(95.4% .038 75.164);
65
69
  --color-orange-600: oklch(64.6% .222 41.116);
70
+ --color-orange-800: oklch(47% .157 37.304);
66
71
  --color-amber-100: oklch(96.2% .059 95.617);
67
72
  --color-yellow-50: oklch(98.7% .026 102.212);
73
+ --color-yellow-100: oklch(97.3% .071 103.193);
74
+ --color-yellow-500: oklch(79.5% .184 86.047);
68
75
  --color-yellow-600: oklch(68.1% .162 75.834);
69
76
  --color-yellow-800: oklch(47.6% .114 61.907);
70
77
  --color-green-50: oklch(98.2% .018 155.826);
78
+ --color-green-100: oklch(96.2% .044 156.743);
71
79
  --color-green-500: oklch(72.3% .219 149.579);
72
80
  --color-green-600: oklch(62.7% .194 149.214);
73
81
  --color-green-800: oklch(44.8% .119 151.328);
@@ -83,12 +91,14 @@
83
91
  --color-purple-500: oklch(62.7% .265 303.9);
84
92
  --color-purple-600: oklch(55.8% .288 302.321);
85
93
  --color-purple-800: oklch(43.8% .218 303.724);
94
+ --color-gray-50: oklch(98.5% .002 247.839);
86
95
  --color-gray-100: oklch(96.7% .003 264.542);
87
96
  --color-gray-300: oklch(87.2% .01 258.338);
88
97
  --color-gray-400: oklch(70.7% .022 261.325);
89
98
  --color-gray-500: oklch(55.1% .027 264.364);
90
99
  --color-gray-600: oklch(44.6% .03 256.802);
91
100
  --color-gray-700: oklch(37.3% .034 259.733);
101
+ --color-gray-800: oklch(27.8% .033 256.848);
92
102
  --color-white: #fff;
93
103
  --spacing: .25rem;
94
104
  --text-xs: .75rem;
@@ -499,6 +509,10 @@
499
509
  margin-top: calc(var(--spacing) * 4);
500
510
  }
501
511
 
512
+ .mt-6 {
513
+ margin-top: calc(var(--spacing) * 6);
514
+ }
515
+
502
516
  .mt-8 {
503
517
  margin-top: calc(var(--spacing) * 8);
504
518
  }
@@ -507,6 +521,14 @@
507
521
  margin-right: calc(var(--spacing) * 2);
508
522
  }
509
523
 
524
+ .mb-0 {
525
+ margin-bottom: calc(var(--spacing) * 0);
526
+ }
527
+
528
+ .mb-1 {
529
+ margin-bottom: calc(var(--spacing) * 1);
530
+ }
531
+
510
532
  .mb-2 {
511
533
  margin-bottom: calc(var(--spacing) * 2);
512
534
  }
@@ -519,6 +541,10 @@
519
541
  margin-bottom: calc(var(--spacing) * 4);
520
542
  }
521
543
 
544
+ .mb-6 {
545
+ margin-bottom: calc(var(--spacing) * 6);
546
+ }
547
+
522
548
  .mb-8 {
523
549
  margin-bottom: calc(var(--spacing) * 8);
524
550
  }
@@ -1067,6 +1093,10 @@
1067
1093
  mask-repeat: no-repeat;
1068
1094
  }
1069
1095
 
1096
+ .block {
1097
+ display: block;
1098
+ }
1099
+
1070
1100
  .contents {
1071
1101
  display: contents;
1072
1102
  }
@@ -1208,6 +1238,10 @@
1208
1238
  list-style-type: disc;
1209
1239
  }
1210
1240
 
1241
+ .grid-cols-1 {
1242
+ grid-template-columns: repeat(1, minmax(0, 1fr));
1243
+ }
1244
+
1211
1245
  .grid-cols-3 {
1212
1246
  grid-template-columns: repeat(3, minmax(0, 1fr));
1213
1247
  }
@@ -1244,6 +1278,10 @@
1244
1278
  justify-content: flex-end;
1245
1279
  }
1246
1280
 
1281
+ .gap-1 {
1282
+ gap: calc(var(--spacing) * 1);
1283
+ }
1284
+
1247
1285
  .gap-2 {
1248
1286
  gap: calc(var(--spacing) * 2);
1249
1287
  }
@@ -1252,6 +1290,24 @@
1252
1290
  gap: calc(var(--spacing) * 4);
1253
1291
  }
1254
1292
 
1293
+ :where(.space-y-1 > :not(:last-child)) {
1294
+ --tw-space-y-reverse: 0;
1295
+ margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));
1296
+ margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));
1297
+ }
1298
+
1299
+ :where(.space-y-2 > :not(:last-child)) {
1300
+ --tw-space-y-reverse: 0;
1301
+ margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));
1302
+ margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));
1303
+ }
1304
+
1305
+ :where(.space-y-3 > :not(:last-child)) {
1306
+ --tw-space-y-reverse: 0;
1307
+ margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));
1308
+ margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));
1309
+ }
1310
+
1255
1311
  :where(.space-y-4 > :not(:last-child)) {
1256
1312
  --tw-space-y-reverse: 0;
1257
1313
  margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));
@@ -1327,6 +1383,14 @@
1327
1383
  border-color: var(--color-gray-300);
1328
1384
  }
1329
1385
 
1386
+ .border-green-500 {
1387
+ border-color: var(--color-green-500);
1388
+ }
1389
+
1390
+ .border-yellow-500 {
1391
+ border-color: var(--color-yellow-500);
1392
+ }
1393
+
1330
1394
  .border-l-\(--el-color-primary\) {
1331
1395
  border-left-color: var(--el-color-primary);
1332
1396
  }
@@ -1397,6 +1461,10 @@
1397
1461
  background-color: var(--color-blue-500);
1398
1462
  }
1399
1463
 
1464
+ .bg-gray-50 {
1465
+ background-color: var(--color-gray-50);
1466
+ }
1467
+
1400
1468
  .bg-gray-100 {
1401
1469
  background-color: var(--color-gray-100);
1402
1470
  }
@@ -1413,6 +1481,14 @@
1413
1481
  background-color: var(--color-green-50);
1414
1482
  }
1415
1483
 
1484
+ .bg-green-100 {
1485
+ background-color: var(--color-green-100);
1486
+ }
1487
+
1488
+ .bg-green-500 {
1489
+ background-color: var(--color-green-500);
1490
+ }
1491
+
1416
1492
  .bg-green-500\! {
1417
1493
  background-color: var(--color-green-500) !important;
1418
1494
  }
@@ -1421,14 +1497,26 @@
1421
1497
  background-color: var(--color-indigo-50);
1422
1498
  }
1423
1499
 
1500
+ .bg-orange-100 {
1501
+ background-color: var(--color-orange-100);
1502
+ }
1503
+
1424
1504
  .bg-purple-50 {
1425
1505
  background-color: var(--color-purple-50);
1426
1506
  }
1427
1507
 
1508
+ .bg-purple-500 {
1509
+ background-color: var(--color-purple-500);
1510
+ }
1511
+
1428
1512
  .bg-purple-500\! {
1429
1513
  background-color: var(--color-purple-500) !important;
1430
1514
  }
1431
1515
 
1516
+ .bg-red-100 {
1517
+ background-color: var(--color-red-100);
1518
+ }
1519
+
1432
1520
  .bg-red-500\! {
1433
1521
  background-color: var(--color-red-500) !important;
1434
1522
  }
@@ -1445,6 +1533,10 @@
1445
1533
  background-color: var(--color-yellow-50);
1446
1534
  }
1447
1535
 
1536
+ .bg-yellow-100 {
1537
+ background-color: var(--color-yellow-100);
1538
+ }
1539
+
1448
1540
  .bg-linear-to-r {
1449
1541
  --tw-gradient-position: to right;
1450
1542
  }
@@ -1477,6 +1569,10 @@
1477
1569
  padding: calc(var(--spacing) * 2);
1478
1570
  }
1479
1571
 
1572
+ .p-3 {
1573
+ padding: calc(var(--spacing) * 3);
1574
+ }
1575
+
1480
1576
  .p-4 {
1481
1577
  padding: calc(var(--spacing) * 4);
1482
1578
  }
@@ -1509,6 +1605,10 @@
1509
1605
  padding-block: calc(var(--spacing) * 2);
1510
1606
  }
1511
1607
 
1608
+ .py-8 {
1609
+ padding-block: calc(var(--spacing) * 8);
1610
+ }
1611
+
1512
1612
  .pr-0 {
1513
1613
  padding-right: calc(var(--spacing) * 0);
1514
1614
  }
@@ -1634,6 +1734,10 @@
1634
1734
  color: var(--color-gray-700);
1635
1735
  }
1636
1736
 
1737
+ .text-gray-800 {
1738
+ color: var(--color-gray-800);
1739
+ }
1740
+
1637
1741
  .text-green-600 {
1638
1742
  color: var(--color-green-600);
1639
1743
  }
@@ -1654,6 +1758,10 @@
1654
1758
  color: var(--color-orange-600);
1655
1759
  }
1656
1760
 
1761
+ .text-orange-800 {
1762
+ color: var(--color-orange-800);
1763
+ }
1764
+
1657
1765
  .text-purple-600 {
1658
1766
  color: var(--color-purple-600);
1659
1767
  }
@@ -1666,6 +1774,10 @@
1666
1774
  color: var(--color-red-500);
1667
1775
  }
1668
1776
 
1777
+ .text-red-800 {
1778
+ color: var(--color-red-800);
1779
+ }
1780
+
1669
1781
  .text-white {
1670
1782
  color: var(--color-white);
1671
1783
  }
@@ -1690,6 +1802,10 @@
1690
1802
  font-style: italic;
1691
1803
  }
1692
1804
 
1805
+ .line-through {
1806
+ text-decoration-line: line-through;
1807
+ }
1808
+
1693
1809
  .underline {
1694
1810
  text-decoration-line: underline;
1695
1811
  }
@@ -1719,7 +1835,33 @@
1719
1835
  transition-duration: var(--tw-duration, var(--default-transition-duration));
1720
1836
  }
1721
1837
 
1838
+ .transition-colors {
1839
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
1840
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
1841
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
1842
+ }
1843
+
1722
1844
  @media (hover: hover) {
1845
+ .hover\:bg-blue-600:hover {
1846
+ background-color: var(--color-blue-600);
1847
+ }
1848
+
1849
+ .hover\:bg-gray-50:hover {
1850
+ background-color: var(--color-gray-50);
1851
+ }
1852
+
1853
+ .hover\:bg-green-600:hover {
1854
+ background-color: var(--color-green-600);
1855
+ }
1856
+
1857
+ .hover\:bg-purple-600:hover {
1858
+ background-color: var(--color-purple-600);
1859
+ }
1860
+
1861
+ .hover\:text-red-700:hover {
1862
+ color: var(--color-red-700);
1863
+ }
1864
+
1723
1865
  .hover\:opacity-70:hover {
1724
1866
  opacity: .7;
1725
1867
  }
@@ -1762,6 +1904,10 @@
1762
1904
  .md\:hidden {
1763
1905
  display: none;
1764
1906
  }
1907
+
1908
+ .md\:grid-cols-2 {
1909
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1910
+ }
1765
1911
  }
1766
1912
 
1767
1913
  @media (min-width: 64rem) {