@techsio/ui-kit 0.0.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 (183) hide show
  1. package/README.md +165 -0
  2. package/dist/atoms/badge.js +66 -0
  3. package/dist/atoms/button.js +275 -0
  4. package/dist/atoms/error-text.js +38 -0
  5. package/dist/atoms/extra-text.js +27 -0
  6. package/dist/atoms/icon.js +42 -0
  7. package/dist/atoms/image.js +11 -0
  8. package/dist/atoms/input.js +83 -0
  9. package/dist/atoms/label.js +43 -0
  10. package/dist/atoms/link-button.js +51 -0
  11. package/dist/atoms/link.js +23 -0
  12. package/dist/atoms/numeric-input.js +221 -0
  13. package/dist/atoms/rating.js +117 -0
  14. package/dist/atoms/textarea.js +81 -0
  15. package/dist/atoms/tooltip.js +119 -0
  16. package/dist/molecules/accordion.js +245 -0
  17. package/dist/molecules/breadcrumb.js +168 -0
  18. package/dist/molecules/carousel.js +333 -0
  19. package/dist/molecules/checkbox.js +92 -0
  20. package/dist/molecules/color-select.js +159 -0
  21. package/dist/molecules/combobox.js +253 -0
  22. package/dist/molecules/dialog.js +313 -0
  23. package/dist/molecules/form-checkbox.js +59 -0
  24. package/dist/molecules/form-input.js +55 -0
  25. package/dist/molecules/form-numeric-input.js +47 -0
  26. package/dist/molecules/form-textarea.js +54 -0
  27. package/dist/molecules/menu.js +302 -0
  28. package/dist/molecules/pagination.js +184 -0
  29. package/dist/molecules/popover.js +152 -0
  30. package/dist/molecules/product-card.js +194 -0
  31. package/dist/molecules/search-form.js +106 -0
  32. package/dist/molecules/select.js +217 -0
  33. package/dist/molecules/slider.js +249 -0
  34. package/dist/molecules/steps.js +178 -0
  35. package/dist/molecules/switch.js +109 -0
  36. package/dist/molecules/tabs.js +211 -0
  37. package/dist/molecules/toast.js +126 -0
  38. package/dist/molecules/tree-view.js +451 -0
  39. package/dist/organisms/footer.js +209 -0
  40. package/dist/organisms/header.js +245 -0
  41. package/dist/organisms/table.js +233 -0
  42. package/dist/src/atoms/badge.d.ts +59 -0
  43. package/dist/src/atoms/badge.d.ts.map +1 -0
  44. package/dist/src/atoms/button.d.ts +97 -0
  45. package/dist/src/atoms/button.d.ts.map +1 -0
  46. package/dist/src/atoms/error-text.d.ts +29 -0
  47. package/dist/src/atoms/error-text.d.ts.map +1 -0
  48. package/dist/src/atoms/extra-text.d.ts +27 -0
  49. package/dist/src/atoms/extra-text.d.ts.map +1 -0
  50. package/dist/src/atoms/icon.d.ts +65 -0
  51. package/dist/src/atoms/icon.d.ts.map +1 -0
  52. package/dist/src/atoms/image.d.ts +17 -0
  53. package/dist/src/atoms/image.d.ts.map +1 -0
  54. package/dist/src/atoms/input.d.ts +78 -0
  55. package/dist/src/atoms/input.d.ts.map +1 -0
  56. package/dist/src/atoms/label.d.ts +41 -0
  57. package/dist/src/atoms/label.d.ts.map +1 -0
  58. package/dist/src/atoms/link-button.d.ts +129 -0
  59. package/dist/src/atoms/link-button.d.ts.map +1 -0
  60. package/dist/src/atoms/link.d.ts +17 -0
  61. package/dist/src/atoms/link.d.ts.map +1 -0
  62. package/dist/src/atoms/numeric-input.d.ts +64 -0
  63. package/dist/src/atoms/numeric-input.d.ts.map +1 -0
  64. package/dist/src/atoms/rating.d.ts +108 -0
  65. package/dist/src/atoms/rating.d.ts.map +1 -0
  66. package/dist/src/atoms/textarea.d.ts +81 -0
  67. package/dist/src/atoms/textarea.d.ts.map +1 -0
  68. package/dist/src/atoms/tooltip.d.ts +88 -0
  69. package/dist/src/atoms/tooltip.d.ts.map +1 -0
  70. package/dist/src/molecules/accordion.d.ts +182 -0
  71. package/dist/src/molecules/accordion.d.ts.map +1 -0
  72. package/dist/src/molecules/breadcrumb.d.ts +117 -0
  73. package/dist/src/molecules/breadcrumb.d.ts.map +1 -0
  74. package/dist/src/molecules/carousel.d.ts +261 -0
  75. package/dist/src/molecules/carousel.d.ts.map +1 -0
  76. package/dist/src/molecules/checkbox.d.ts +19 -0
  77. package/dist/src/molecules/checkbox.d.ts.map +1 -0
  78. package/dist/src/molecules/color-select.d.ts +20 -0
  79. package/dist/src/molecules/color-select.d.ts.map +1 -0
  80. package/dist/src/molecules/combobox.d.ts +141 -0
  81. package/dist/src/molecules/combobox.d.ts.map +1 -0
  82. package/dist/src/molecules/dialog.d.ts +234 -0
  83. package/dist/src/molecules/dialog.d.ts.map +1 -0
  84. package/dist/src/molecules/form-checkbox.d.ts +15 -0
  85. package/dist/src/molecules/form-checkbox.d.ts.map +1 -0
  86. package/dist/src/molecules/form-input.d.ts +14 -0
  87. package/dist/src/molecules/form-input.d.ts.map +1 -0
  88. package/dist/src/molecules/form-numeric-input.d.ts +14 -0
  89. package/dist/src/molecules/form-numeric-input.d.ts.map +1 -0
  90. package/dist/src/molecules/form-textarea.d.ts +14 -0
  91. package/dist/src/molecules/form-textarea.d.ts.map +1 -0
  92. package/dist/src/molecules/menu.d.ts +153 -0
  93. package/dist/src/molecules/menu.d.ts.map +1 -0
  94. package/dist/src/molecules/pagination.d.ts +123 -0
  95. package/dist/src/molecules/pagination.d.ts.map +1 -0
  96. package/dist/src/molecules/popover.d.ts +124 -0
  97. package/dist/src/molecules/popover.d.ts.map +1 -0
  98. package/dist/src/molecules/product-card.d.ts +160 -0
  99. package/dist/src/molecules/product-card.d.ts.map +1 -0
  100. package/dist/src/molecules/search-form.d.ts +39 -0
  101. package/dist/src/molecules/search-form.d.ts.map +1 -0
  102. package/dist/src/molecules/select.d.ts +126 -0
  103. package/dist/src/molecules/select.d.ts.map +1 -0
  104. package/dist/src/molecules/slider.d.ts +120 -0
  105. package/dist/src/molecules/slider.d.ts.map +1 -0
  106. package/dist/src/molecules/steps.d.ts +96 -0
  107. package/dist/src/molecules/steps.d.ts.map +1 -0
  108. package/dist/src/molecules/switch.d.ts +71 -0
  109. package/dist/src/molecules/switch.d.ts.map +1 -0
  110. package/dist/src/molecules/tabs.d.ts +207 -0
  111. package/dist/src/molecules/tabs.d.ts.map +1 -0
  112. package/dist/src/molecules/toast.d.ts +83 -0
  113. package/dist/src/molecules/toast.d.ts.map +1 -0
  114. package/dist/src/molecules/tree-view.d.ts +202 -0
  115. package/dist/src/molecules/tree-view.d.ts.map +1 -0
  116. package/dist/src/organisms/footer.d.ts +254 -0
  117. package/dist/src/organisms/footer.d.ts.map +1 -0
  118. package/dist/src/organisms/header.d.ts +186 -0
  119. package/dist/src/organisms/header.d.ts.map +1 -0
  120. package/dist/src/organisms/table.d.ts +250 -0
  121. package/dist/src/organisms/table.d.ts.map +1 -0
  122. package/dist/src/templates/accordion.d.ts +15 -0
  123. package/dist/src/templates/accordion.d.ts.map +1 -0
  124. package/dist/src/templates/carousel.d.ts +13 -0
  125. package/dist/src/templates/carousel.d.ts.map +1 -0
  126. package/dist/src/templates/numeric-input.d.ts +14 -0
  127. package/dist/src/templates/numeric-input.d.ts.map +1 -0
  128. package/dist/src/templates/product-card.d.ts +33 -0
  129. package/dist/src/templates/product-card.d.ts.map +1 -0
  130. package/dist/src/templates/tabs.d.ts +16 -0
  131. package/dist/src/templates/tabs.d.ts.map +1 -0
  132. package/dist/src/types/zag.d.ts +19 -0
  133. package/dist/src/types/zag.d.ts.map +1 -0
  134. package/dist/src/utils.d.ts +4 -0
  135. package/dist/src/utils.d.ts.map +1 -0
  136. package/dist/templates/accordion.js +37 -0
  137. package/dist/templates/carousel.js +55 -0
  138. package/dist/templates/numeric-input.js +49 -0
  139. package/dist/templates/product-card.js +92 -0
  140. package/dist/templates/tabs.js +34 -0
  141. package/dist/types/zag.js +0 -0
  142. package/dist/utils.js +20 -0
  143. package/package.json +126 -0
  144. package/src/tokens/_base.css +25 -0
  145. package/src/tokens/_colors.css +5 -0
  146. package/src/tokens/_layout.css +34 -0
  147. package/src/tokens/_semantic.css +360 -0
  148. package/src/tokens/_spacing.css +22 -0
  149. package/src/tokens/_typography.css +17 -0
  150. package/src/tokens/components/atoms/_badge.css +61 -0
  151. package/src/tokens/components/atoms/_button.css +215 -0
  152. package/src/tokens/components/atoms/_icon.css +122 -0
  153. package/src/tokens/components/atoms/_input.css +125 -0
  154. package/src/tokens/components/atoms/_numeric-input.css +57 -0
  155. package/src/tokens/components/atoms/_rating.css +33 -0
  156. package/src/tokens/components/atoms/_textarea.css +93 -0
  157. package/src/tokens/components/atoms/_tooltip.css +21 -0
  158. package/src/tokens/components/components.css +32 -0
  159. package/src/tokens/components/molecules/_accordion.css +85 -0
  160. package/src/tokens/components/molecules/_breadcrumb.css +44 -0
  161. package/src/tokens/components/molecules/_carousel.css +72 -0
  162. package/src/tokens/components/molecules/_checkbox.css +29 -0
  163. package/src/tokens/components/molecules/_color-select.css +61 -0
  164. package/src/tokens/components/molecules/_combobox.css +116 -0
  165. package/src/tokens/components/molecules/_dialog.css +75 -0
  166. package/src/tokens/components/molecules/_menu.css +48 -0
  167. package/src/tokens/components/molecules/_pagination.css +75 -0
  168. package/src/tokens/components/molecules/_popover.css +39 -0
  169. package/src/tokens/components/molecules/_product-card.css +85 -0
  170. package/src/tokens/components/molecules/_search-form.css +10 -0
  171. package/src/tokens/components/molecules/_select.css +88 -0
  172. package/src/tokens/components/molecules/_slider.css +75 -0
  173. package/src/tokens/components/molecules/_steps.css +54 -0
  174. package/src/tokens/components/molecules/_switch.css +62 -0
  175. package/src/tokens/components/molecules/_tabs.css +69 -0
  176. package/src/tokens/components/molecules/_toast.css +77 -0
  177. package/src/tokens/components/molecules/_tree-view.css +80 -0
  178. package/src/tokens/components/molecules/index.css +2 -0
  179. package/src/tokens/components/organisms/_footer.css +90 -0
  180. package/src/tokens/components/organisms/_header.css +86 -0
  181. package/src/tokens/components/organisms/_table.css +63 -0
  182. package/src/tokens/index.css +67 -0
  183. package/src/tokens/tokens-only.css +66 -0
@@ -0,0 +1,75 @@
1
+ :root {
2
+ --opacity-pagination-hover: 30%;
3
+ }
4
+
5
+ @theme static {
6
+ /* === BASE COLOR MAPPING === */
7
+ /* Reference layer - single source of truth for theming */
8
+ --color-pagination: var(--color-surface);
9
+ --color-pagination-accent: var(--color-primary);
10
+
11
+ /* === DERIVED COLORS === */
12
+ /* Background colors - using reference layer */
13
+ --color-pagination-bg: var(--color-pagination);
14
+ --color-pagination-bg-active: var(--color-pagination-accent);
15
+ --color-pagination-bg-hover: oklch(
16
+ from var(--color-pagination-accent) calc(l + var(--state-hover)) c h
17
+ );
18
+ --color-pagination-neutral-bg: transparent;
19
+
20
+ /* Foreground colors */
21
+ --color-pagination-fg: var(--color-fg-primary);
22
+ --color-pagination-filled-fg-active: var(--color-fg-dark);
23
+ --color-pagination-outlined-fg-active: var(--color-pagination-accent);
24
+ --color-pagination-minimal-fg-active: var(--color-pagination-accent);
25
+
26
+ /* Border colors */
27
+ --color-pagination-border: var(--color-border-primary);
28
+ --color-pagination-border-active: var(--color-pagination-accent);
29
+ --color-pagination-border-hover: --alpha(
30
+ var(--color-pagination-border-active) /
31
+ var(--opacity-pagination-hover)
32
+ );
33
+
34
+ /* === DISABLED STATES === */
35
+ --color-pagination-bg-disabled: var(--color-disabled-bg);
36
+ --color-pagination-fg-disabled: --alpha(
37
+ var(--color-pagination-fg) /
38
+ var(--opacity-disabled)
39
+ );
40
+ --color-pagination-border-disabled: --alpha(
41
+ var(--color-pagination-border) /
42
+ var(--opacity-disabled)
43
+ );
44
+
45
+ /* === SPACING === */
46
+ --spacing-pagination: var(--spacing-200);
47
+ --spacing-pagination-list: var(--spacing-pagination);
48
+ --height-pagination-sm: 2em;
49
+ --height-pagination-md: 2.5em;
50
+ --height-pagination-lg: 3em;
51
+
52
+ /* === TYPOGRAPHY === */
53
+ --text-pagination-sm: var(--text-xs);
54
+ --text-pagination-md: var(--text-sm);
55
+ --text-pagination-lg: var(--text-md);
56
+
57
+ /* === BORDERS & RADIUS === */
58
+ --radius-pagination: var(--radius-sm);
59
+ --border-pagination-width: var(--border-width-sm);
60
+
61
+ /* === FOCUS RINGS === */
62
+ --color-pagination-ring: var(--color-ring);
63
+ }
64
+
65
+ @utility token-icon-pagination-prev {
66
+ @apply icon-[mdi--chevron-left];
67
+ }
68
+
69
+ @utility token-icon-pagination-next {
70
+ @apply icon-[mdi--chevron-right];
71
+ }
72
+
73
+ @utility token-icon-pagination-ellipsis {
74
+ @apply icon-[mdi--ellipsis-horizontal];
75
+ }
@@ -0,0 +1,39 @@
1
+ @theme static {
2
+ /* === ZAG.JS SPECIFIC TOKENS === */
3
+ /* These tokens are used directly by Zag.js library */
4
+ --arrow-size: var(--spacing-150);
5
+ --arrow-background: var(--color-popover-bg);
6
+
7
+ /* === DERIVED COLORS === */
8
+ /* Background colors */
9
+ --color-popover-bg: var(--color-overlay);
10
+
11
+ /* Foreground colors */
12
+ --color-popover-fg: var(--color-fg-primary);
13
+ --color-popover-description-fg: var(--color-fg-secondary);
14
+
15
+ /* Border colors */
16
+ --color-popover-border: var(--color-highlight);
17
+
18
+ /* === SPACING === */
19
+ --spacing-popover-sm: var(--spacing-200);
20
+ --spacing-popover-md: var(--spacing-250);
21
+ --spacing-popover-lg: var(--spacing-350);
22
+ --spacing-popover-title-mb: var(--spacing-150);
23
+
24
+ /* Composite spacing */
25
+ --padding-popover-trigger: var(--spacing-100) var(--spacing-150);
26
+
27
+ /* === TYPOGRAPHY === */
28
+ --text-popover-title-sm: var(--text-md);
29
+ --text-popover-title-md: var(--text-lg);
30
+ --text-popover-title-lg: var(--text-xl);
31
+ --text-popover-description-size: var(--text-sm);
32
+ --font-weight-popover-title: var(--font-weight-semibold);
33
+
34
+ /* === BORDERS & RADIUS === */
35
+ --radius-popover: var(--radius-sm);
36
+
37
+ /* === SHADOWS === */
38
+ --shadow-popover: var(--shadow-primary);
39
+ }
@@ -0,0 +1,85 @@
1
+ @theme static {
2
+ --product-card-layout-row-grid: auto 1fr;
3
+ --product-card-layout-column-grid: 1fr;
4
+ /* === BASE COLORS === */
5
+ --color-product-card-bg: var(--color-surface);
6
+ --color-product-card-name-fg: var(--color-fg-primary);
7
+
8
+ --color-product-card-price-fg: var(--color-fg-primary);
9
+ --color-product-card-border: var(--color-border-primary);
10
+
11
+ --color-product-card-stock-fg-in-stock: var(--color-success);
12
+ --color-product-card-stock-fg-limited-stock: var(--color-warning);
13
+ --color-product-card-stock-fg-out-of-stock: var(--color-danger);
14
+
15
+ /* === STATE VARIATIONS === */
16
+ /* Add to cart button */
17
+ --color-product-card-button-cart-bg: var(--color-button-primary);
18
+ --color-product-card-button-cart-bg-hover: oklch(
19
+ from var(--color-product-card-button-cart-bg) calc(l + var(--state-hover)) c
20
+ h
21
+ );
22
+ --color-product-card-button-cart-fg: var(--color-button-fg);
23
+
24
+ /* Detail button */
25
+ --color-product-card-button-detail-bg: var(--color-button-secondary);
26
+ --color-product-card-button-detail-bg-hover: oklch(
27
+ from var(--color-product-card-button-detail-bg) calc(l + var(--state-hover))
28
+ c h
29
+ );
30
+ --color-product-card-button-detail-fg: var(--color-button-fg);
31
+
32
+ /* Wishlist button */
33
+ --color-product-card-button-wishlist-bg: var(--color-button-tertiary);
34
+ --color-product-card-button-wishlist-bg-hover: oklch(
35
+ from var(--color-product-card-button-wishlist-bg)
36
+ calc(l + var(--state-hover)) c h
37
+ );
38
+ --color-product-card-button-wishlist-fg: var(--color-button-fg);
39
+
40
+ /* === SPACING === */
41
+ --spacing-product-card-padding: var(--spacing-150);
42
+ --spacing-product-card-row-layout: var(--spacing-250);
43
+ --spacing-product-card-col-layout: var(--spacing-100);
44
+ --spacing-product-card-box: var(--spacing-150);
45
+ --spacing-product-card-max: 100%;
46
+ --spacing-product-card-buttons: var(--spacing-150);
47
+
48
+ /* === TYPOGRAPHY === */
49
+ --text-product-card-name-size: var(--text-md);
50
+ --text-product-card-stock-size: var(--text-sm);
51
+ --text-product-card-price-size: var(--text-lg);
52
+ --leading-product-card-name: var(--line-height-snug);
53
+
54
+ --font-weight-product-card-name: var(--font-weight-medium);
55
+ --font-weight-product-card-price: var(--font-weight-medium);
56
+ --font-weight-product-card-stock: var(--font-weight-medium);
57
+
58
+ /* === BORDERS & RADIUS === */
59
+ --border-product-card-width: var(--border-width-sm);
60
+ --radius-product-card: var(--radius-md);
61
+ --radius-product-card-image: var(--radius-product-card);
62
+
63
+ /* === ASPECT RATIOS === */
64
+ --aspect-product-card-image: var(--aspect-square);
65
+ }
66
+
67
+ /* === UTILITIES === */
68
+ @utility line-clamp-product-card-name {
69
+ overflow: hidden;
70
+ display: -webkit-box;
71
+ -webkit-box-orient: vertical;
72
+ -webkit-line-clamp: 2;
73
+ }
74
+
75
+ @utility token-icon-cart-button {
76
+ @apply token-icon-cart;
77
+ }
78
+
79
+ @utility token-icon-detail-button {
80
+ @apply token-icon-eye;
81
+ }
82
+
83
+ @utility token-icon-wishlist-button {
84
+ @apply token-icon-heart;
85
+ }
@@ -0,0 +1,10 @@
1
+ @theme static {
2
+ /* Spacing for stacked layout */
3
+ --spacing-search-form-sm: var(--spacing-150);
4
+ --spacing-search-form-md: var(--spacing-200);
5
+ --spacing-search-form-lg: var(--spacing-250);
6
+ }
7
+
8
+ @utility token-icon-search {
9
+ @apply icon-[mdi--magnify];
10
+ }
@@ -0,0 +1,88 @@
1
+ @theme static {
2
+ /* === BASE COLOR MAPPING === */
3
+ --color-select: var(--color-surface);
4
+ --color-select-accent: var(--color-primary);
5
+ --color-select-danger: var(--color-danger);
6
+ --color-select-border: var(--color-border-primary);
7
+ --color-select-fg: var(--color-fg-primary);
8
+
9
+ /* === STATE VARIATIONS === */
10
+ --color-select-hover: oklch(
11
+ from var(--color-select) calc(l + var(--state-hover)) c h
12
+ );
13
+
14
+ /* === ROOT === */
15
+ --gap-select-root: var(--spacing-150);
16
+
17
+ /* === TRIGGER === */
18
+ --color-select-trigger-border: var(--color-select-border);
19
+ --color-select-trigger-bg-hover: var(--color-select-hover);
20
+ --color-select-trigger-border-focus: var(--color-select-accent);
21
+ --padding-select-trigger: var(--spacing-200);
22
+
23
+ /* === CLEAR TRIGGER === */
24
+ --color-select-clear-trigger-fg: var(--color-select-fg);
25
+ --color-select-clear-trigger-bg: transparent;
26
+ --padding-select-clear-trigger: var(--spacing-100);
27
+ --spacing-select-right: var(--spacing-450);
28
+
29
+ /* === DROPDOWN CONTENT === */
30
+ --color-select-content-bg: var(--color-select);
31
+ --color-select-content-border: var(--color-border-primary);
32
+ --shadow-select-content: var(--shadow-md);
33
+
34
+ /* === OPTION ITEM === */
35
+ --color-select-item-bg: transparent;
36
+ --color-select-item-fg: var(--color-select-fg);
37
+ --color-select-item-bg-hover: var(--color-select-hover);
38
+ --color-select-item-bg-selected: oklch(
39
+ from var(--color-select) calc(l - var(--surface-increment)) c h
40
+ );
41
+ --color-select-item-selected-fg: var(--color-select-accent);
42
+ --padding-select-item: var(--spacing-150) var(--spacing-250);
43
+
44
+ /* === INDICATOR === */
45
+ --color-select-indicator: var(--color-select-accent);
46
+
47
+ /* === PLACEHOLDER === */
48
+ --color-select-placeholder: --alpha(
49
+ var(--color-fg-secondary) /
50
+ var(--opacity-placeholder)
51
+ );
52
+
53
+ /* === DISABLED STATES === */
54
+ --opacity-select-disabled: var(--opacity-disabled);
55
+
56
+ /* === SPACING === */
57
+ --spacing-content: var(--spacing-450);
58
+
59
+ /* === TYPOGRAPHY === */
60
+ --text-select-trigger-size: var(--text-md);
61
+
62
+ --text-select-xs: var(--text-xs);
63
+ --text-select-sm: var(--text-sm);
64
+ --text-select-md: var(--text-md);
65
+ --text-select-lg: var(--text-lg);
66
+
67
+ /* === BORDERS & RADIUS === */
68
+ --radius-select: var(--radius-sm);
69
+
70
+ /* === Z-INDEX === */
71
+ --z-content: 50;
72
+ }
73
+
74
+ /* === ICONS === */
75
+ @utility token-icon-select-indicator {
76
+ @apply icon-[mdi--chevron-down];
77
+ }
78
+ @utility token-icon-select-indicator-open {
79
+ @apply icon-[mdi--chevron-right];
80
+ }
81
+
82
+ @utility token-icon-select-check {
83
+ @apply icon-[mdi--check];
84
+ }
85
+
86
+ @utility token-icon-select-clear {
87
+ @apply icon-[mdi--close];
88
+ }
@@ -0,0 +1,75 @@
1
+ @theme static {
2
+ --spacing-slider-slim: 2px;
3
+ /* === BASE COLOR MAPPING === */
4
+ /* Reference layer - single source of truth for theming */
5
+ --color-slider-primary: var(--color-primary);
6
+ --color-slider-base: var(--color-surface);
7
+ --color-slider-error: var(--color-danger);
8
+ --color-slider-accent: oklch(
9
+ from var(--color-slider-base) calc(l - var(--surface-increment) * 2) c h
10
+ );
11
+
12
+ /* === DERIVED COLORS === */
13
+ /* Background colors */
14
+ --color-slider-range-bg: var(--color-slider-primary);
15
+ --color-slider-track-bg: var(--color-slider-base);
16
+ --color-slider-marker-bg: var(--color-slider-accent);
17
+ --color-slider-thumb-bg: var(--color-base-light);
18
+ --color-slider-bg-disabled: var(--color-disabled-bg);
19
+
20
+ /* Border colors */
21
+ --color-slider-border: var(--color-border-primary);
22
+
23
+ /* === STATE VARIATIONS === */
24
+ /* Hover states */
25
+ --color-slider-track-bg-hover: oklch(
26
+ from var(--color-slider-track-bg) calc(l + var(--state-hover)) c h
27
+ );
28
+ --color-slider-range-bg-hover: oklch(
29
+ from var(--color-slider-range-bg) calc(l + var(--state-hover)) c h
30
+ );
31
+ --color-slider-thumb-bg-hover: oklch(
32
+ from var(--color-slider-thumb-bg) calc(l + var(--state-hover)) c h
33
+ );
34
+
35
+ /* === VALIDATION STATES === */
36
+ --color-slider-range-bg-error: var(--color-slider-error);
37
+ --color-slider-border-error: var(--color-slider-error);
38
+
39
+ /* === DISABLED STATES === */
40
+ /* we must avoid transparent paint, otherwise the range would be visible */
41
+ --color-slider-thumb-bg-disabled: var(--color-slider-accent);
42
+ --color-slider-border-disabled: var(--color-disabled-border);
43
+
44
+ /* === SPACING === */
45
+ --spacing-slider-root: var(--spacing-200);
46
+
47
+ --spacing-slider-thumb-sm: var(--spacing-200);
48
+ --spacing-slider-thumb-md: var(--spacing-250);
49
+ --spacing-slider-thumb-lg: var(--spacing-350);
50
+
51
+ --spacing-slider-track-sm: var(--spacing-100);
52
+ --spacing-slider-track-md: var(--spacing-150);
53
+ --spacing-slider-track-lg: var(--spacing-200);
54
+
55
+ --spacing-slider-marker: var(--spacing-slider-slim);
56
+ --padding-marker-text: 0 0 0 var(--spacing-150);
57
+
58
+ /* === TYPOGRAPHY === */
59
+ --text-slider-value-size: var(--text-sm);
60
+ --height-marker-vertical: var(--spacing-300);
61
+
62
+ /* === BORDERS & RADIUS === */
63
+ --border-width-slider: var(--border-width-sm);
64
+ --radius-slider-track: var(--radius-full);
65
+ --radius-slider-thumb: var(--radius-full);
66
+
67
+ /* === SHADOWS === */
68
+ --shadow-slider-thumb: var(--shadow-sm);
69
+
70
+ /* === FOCUS RINGS === */
71
+ --color-slider-ring: var(--color-ring);
72
+
73
+ /* === OPACITY === */
74
+ --opacity-slider-disabled: var(--opacity-disabled);
75
+ }
@@ -0,0 +1,54 @@
1
+ @theme static {
2
+ /* === BASE TOKEN MAPPING === */
3
+ --color-steps: var(--color-base);
4
+ --color-steps-active: var(--color-primary);
5
+ --color-steps-accent: var(--color-surface);
6
+ --color-steps-fg: var(--color-fg-primary);
7
+ --color-steps-fg-active: var(--color-fg-reverse);
8
+ --color-steps-fg-current: var(--color-fg-reverse);
9
+
10
+ /* === ROOT === */
11
+ --color-steps-root-bg: var(--color-steps);
12
+
13
+ /* === LIST === */
14
+ --color-steps-list-bg: var(--color-steps);
15
+
16
+ /* === ITEM === */
17
+ --color-steps-item-bg: transparent;
18
+
19
+ /* === TRIGGER === */
20
+ --gap-trigger: var(--spacing-150);
21
+
22
+ /* === CONTENT === */
23
+ --color-steps-content-bg: var(--color-steps-accent);
24
+
25
+ /* === INDICATOR === */
26
+ --color-steps-indicator-bg: var(--color-steps-accent);
27
+ --color-steps-indicator-bg-hover: var(--color-steps-active);
28
+ --color-steps-indicator-bg-complete: var(--color-steps-active);
29
+ --color-steps-indicator-bg-current: var(--color-steps-active);
30
+
31
+ /* === SEPARATOR === */
32
+ --color-steps-separator-bg: var(--color-steps-accent);
33
+ --color-steps-separator-bg-complete: var(--color-steps-active);
34
+
35
+ /* === SPACING === */
36
+ --gap-root: var(--spacing-250);
37
+ --gap-list: var(--spacing-200);
38
+ --gap-item: var(--spacing-150);
39
+ --padding-content: var(--spacing-250);
40
+ --height-steps-indicator: var(--spacing-350);
41
+ --padding-steps-btn: var(--spacing-100) var(--spacing-200);
42
+
43
+ /* === SIZES === */
44
+ --height-steps-separator: 2px;
45
+ --width-steps-separator: 2px;
46
+
47
+ /* === FOCUS RINGS === */
48
+ --color-steps-ring: var(--color-ring);
49
+ }
50
+
51
+ /* Semantic tokens for steps icons */
52
+ @utility token-icon-steps-check {
53
+ @apply icon-[mdi--check];
54
+ }
@@ -0,0 +1,62 @@
1
+ :root {
2
+ /* The red colour will be less noticeable. */
3
+ --opacity-switch-invalid: 80%;
4
+ }
5
+
6
+ @theme static {
7
+ /* === BASE TOKEN MAPPING === */
8
+ --color-switch-bg: var(--color-overlay);
9
+ --color-switch-success: var(--color-success);
10
+ --color-switch-invalid: --alpha(
11
+ var(--color-danger) /
12
+ var(--opacity-switch-invalid)
13
+ );
14
+ --color-switch-border: var(--color-border-primary);
15
+ --color-switch-thumb-bg: var(--color-base-light);
16
+ --color-switch-label-fg: var(--color-fg-primary);
17
+ --color-switch-label-fg-disabled: var(--color-disabled-fg);
18
+
19
+ /* Backgrounds colors */
20
+ --color-switch-bg-checked: var(--color-switch-success);
21
+
22
+ /* === STATE VARIATIONS === */
23
+ --color-switch-bg-hover: oklch(
24
+ from var(--color-switch-bg) calc(l + var(--state-hover)) c h
25
+ );
26
+ --color-switch-bg-checked-hover: oklch(
27
+ from var(--color-switch-success) calc(l + var(--state-hover)) c h
28
+ );
29
+
30
+ /* === DISABLED STATES === */
31
+ --color-switch-bg-disabled: var(--color-disabled-bg);
32
+ --color-switch-thumb-bg-disabled: --alpha(
33
+ var(--color-switch-thumb-bg) /
34
+ var(--opacity-disabled)
35
+ );
36
+ --color-switch-border-disabled: var(--color-disabled-border);
37
+
38
+ /* === INVALID STATES === */
39
+ --color-switch-bg-invalid: var(--color-switch-invalid);
40
+
41
+ /* === SPACING === */
42
+ --spacing-switch-root: var(--spacing-200);
43
+ --spacing-switch-control: var(--spacing-50);
44
+ --spacing-switch-track-width: var(--spacing-600);
45
+ --spacing-switch-track-height: var(--spacing-350);
46
+ --spacing-switch-thumb-height: calc(
47
+ var(--spacing-switch-track-height) -
48
+ (var(--spacing-switch-control) * 2)
49
+ );
50
+ --spacing-switch-translate-track: calc(
51
+ var(--spacing-switch-track-width) -
52
+ var(--spacing-switch-track-height) -
53
+ var(--spacing-switch-control)
54
+ );
55
+
56
+ /* === BORDERS & RADIUS === */
57
+ --border-width-switch: var(--border-width-sm);
58
+ --radius-switch: var(--radius-full);
59
+
60
+ /* === FOCUS RINGS === */
61
+ --color-switch-ring: var(--color-ring);
62
+ }
@@ -0,0 +1,69 @@
1
+ @theme static {
2
+ /* === BASE TOKEN MAPPING === */
3
+ --color-tabs-bg: var(--color-surface);
4
+ --color-tabs-fg: var(--color-fg-secondary);
5
+ --color-tabs-active: var(--color-primary);
6
+ --color-tabs-fg-primary: var(--color-fg-primary);
7
+ --color-tabs-fg-secondary: var(--color-fg-reverse);
8
+
9
+ /* === LIST COMPONENT === */
10
+ --color-tabs-list-bg: oklch(
11
+ from var(--color-tabs-bg) calc(l - var(--surface-increment)) c h
12
+ );
13
+
14
+ /* === TRIGGER COMPONENT === */
15
+ --color-tabs-trigger-fg: var(--color-tabs-fg);
16
+ --color-tabs-trigger-solid-fg: var(--color-tabs-fg-secondary);
17
+ --color-tabs-trigger-fg-selected: var(--color-tabs-active);
18
+ --color-tabs-trigger-bg-selected: var(--color-tabs-active);
19
+ --color-tabs-trigger-bg-outline-selected: oklch(
20
+ from var(--color-tabs-active) l c h /
21
+ 0.1
22
+ );
23
+
24
+ --color-tabs-trigger-bg-hover: oklch(
25
+ from var(--color-tabs-bg) calc(l - var(--surface-increment) * 2) c h
26
+ );
27
+
28
+ /* === INDICATOR === */
29
+ --color-tabs-indicator-bg: var(--color-tabs-active);
30
+ --width-tabs-indicator: 2px;
31
+ --height-tabs-indicator: 2px;
32
+
33
+ /* === CONTENT === */
34
+ --color-tabs-content-fg: var(--color-tabs-fg-primary);
35
+
36
+ /* === FOCUS RING === */
37
+ --color-tabs-ring: var(--color-ring);
38
+
39
+ /* === PADDING === */
40
+ /* Trigger padding */
41
+ --padding-tabs-trigger-sm: var(--spacing-100) var(--spacing-150);
42
+ --padding-tabs-trigger-md: var(--spacing-150) var(--spacing-200);
43
+ --padding-tabs-trigger-lg: var(--spacing-200) var(--spacing-250);
44
+
45
+ /* Content padding */
46
+ --spacing-tabs-content-sm: var(--spacing-200);
47
+ --spacing-tabs-content-md: var(--spacing-250);
48
+ --spacing-tabs-content-lg: var(--spacing-350);
49
+
50
+ /* === TYPOGRAPHY === */
51
+ --text-tabs-trigger-sm: var(--text-sm);
52
+ --text-tabs-trigger-md: var(--text-md);
53
+ --text-tabs-trigger-lg: var(--text-lg);
54
+
55
+ --text-tabs-content-sm: var(--text-sm);
56
+ --text-tabs-content-md: var(--text-md);
57
+ --text-tabs-content-lg: var(--text-lg);
58
+
59
+ /* === BORDER & RADIUS === */
60
+ --border-width-tabs: var(--border-width-md);
61
+ --color-tabs-border: var(--color-border-primary);
62
+ --color-tabs-border-selected: var(--color-tabs-active);
63
+ --radius-tabs: 0;
64
+ --radius-tabs-trigger: 0;
65
+ --radius-tabs-indicator: 0;
66
+
67
+ /* === DISABLED STATE === */
68
+ --opacity-tabs-disabled: var(--opacity-disabled);
69
+ }
@@ -0,0 +1,77 @@
1
+ @theme static {
2
+ /* === BASE TOKEN MAPPING === */
3
+ --color-toast-bg: var(--color-highlight);
4
+ --color-toast-fg: var(--color-fg-dark);
5
+ --color-toast-error: var(--color-danger);
6
+ --color-toast-success: var(--color-success);
7
+ --color-toast-info: var(--color-info);
8
+ --color-toast-warning: var(--color-warning);
9
+
10
+ /* === TYPE SPECIFIC COLORS === */
11
+ /* Error */
12
+ --color-toast-error-bg: var(--color-toast-error);
13
+ --color-toast-error-border: var(--color-toast-error);
14
+ --color-toast-error-title: var(--color-toast-fg);
15
+ --color-toast-error-icon: var(--color-toast-fg);
16
+
17
+ /* Success */
18
+ --color-toast-success-bg: var(--color-toast-success);
19
+ --color-toast-success-border: var(--color-toast-success);
20
+ --color-toast-success-title: var(--color-toast-fg);
21
+ --color-toast-success-icon: var(--color-toast-fg);
22
+
23
+ /* Info */
24
+ --color-toast-info-bg: var(--color-toast-info);
25
+ --color-toast-info-border: var(--color-toast-info);
26
+ --color-toast-info-title: var(--color-toast-fg);
27
+ --color-toast-info-icon: var(--color-toast-fg);
28
+
29
+ /* Warning */
30
+ --color-toast-warning-bg: var(--color-toast-warning);
31
+ --color-toast-warning-border: var(--color-toast-warning);
32
+ --color-toast-warning-title: var(--color-toast-fg);
33
+ --color-toast-warning-icon: var(--color-toast-fg);
34
+
35
+ /* === CLOSE BUTTON === */
36
+ --color-toast-close-fg: var(--color-toast-fg);
37
+ --color-toast-close-fg-hover: var(--color-fg-primary);
38
+
39
+ /* === ROOT === */
40
+ --spacing-toast-width: 360px;
41
+
42
+ /* === SPACING === */
43
+ --padding-toast-root: var(--spacing-250);
44
+ --gap-toast-content: var(--spacing-200);
45
+ --spacing-toast-description-gap: var(--spacing-100);
46
+
47
+ /* === TYPOGRAPHY === */
48
+ --font-weight-toast-title: var(--font-weight-medium);
49
+ --text-toast-title-size: var(--text-md);
50
+ --text-toast-description-size: var(--text-sm);
51
+ --text-toast-icon-size: var(--text-lg);
52
+
53
+ /* === BORDERS & RADIUS === */
54
+ --border-width-toast: var(--border-width-sm);
55
+ --radius-toast-root: var(--radius-sm);
56
+ }
57
+
58
+ /* Icons */
59
+ @utility token-icon-toast-success {
60
+ @apply icon-[mdi--check-circle];
61
+ }
62
+
63
+ @utility token-icon-toast-error {
64
+ @apply icon-[mdi--alert-circle];
65
+ }
66
+
67
+ @utility token-icon-toast-warning {
68
+ @apply icon-[mdi--alert];
69
+ }
70
+
71
+ @utility token-icon-toast-info {
72
+ @apply icon-[mdi--information];
73
+ }
74
+
75
+ @utility token-icon-toast-close {
76
+ @apply icon-[mdi--close];
77
+ }