@licklist/design 0.78.21 → 0.78.26

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 (186) hide show
  1. package/dist/assets/Trend-Down.svg +3 -0
  2. package/dist/assets/Trend-Up.svg +3 -0
  3. package/dist/auth/Authorizer.d.ts.map +1 -1
  4. package/dist/auth/Authorizer.js +47 -12
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +5 -0
  8. package/dist/v2/components/EntityHeader/EntityHeader.d.ts +13 -0
  9. package/dist/v2/components/EntityHeader/EntityHeader.d.ts.map +1 -0
  10. package/dist/v2/components/EntityHeader/EntityHeader.js +85 -0
  11. package/dist/v2/components/EntityHeader/EntityHeader.scss.js +6 -0
  12. package/dist/v2/components/EntityHeader/index.d.ts +2 -0
  13. package/dist/v2/components/EntityHeader/index.d.ts.map +1 -0
  14. package/dist/v2/components/NPSScore/NPSScore.d.ts +18 -0
  15. package/dist/v2/components/NPSScore/NPSScore.d.ts.map +1 -0
  16. package/dist/v2/components/NPSScore/index.d.ts +3 -0
  17. package/dist/v2/components/NPSScore/index.d.ts.map +1 -0
  18. package/dist/v2/components/Select/Select.d.ts +10 -0
  19. package/dist/v2/components/Select/Select.d.ts.map +1 -0
  20. package/dist/v2/components/Select/index.d.ts +3 -0
  21. package/dist/v2/components/Select/index.d.ts.map +1 -0
  22. package/dist/v2/components/Tooltip/Tooltip.d.ts +21 -0
  23. package/dist/v2/components/Tooltip/Tooltip.d.ts.map +1 -0
  24. package/dist/v2/components/Tooltip/Tooltip.js +103 -0
  25. package/dist/v2/components/Tooltip/Tooltip.scss.js +6 -0
  26. package/dist/v2/components/Tooltip/index.d.ts +2 -0
  27. package/dist/v2/components/Tooltip/index.d.ts.map +1 -0
  28. package/dist/v2/components/UserAvatar/UserAvatar.d.ts +12 -0
  29. package/dist/v2/components/UserAvatar/UserAvatar.d.ts.map +1 -0
  30. package/dist/v2/components/UserAvatar/UserAvatar.js +77 -0
  31. package/dist/v2/components/UserAvatar/UserAvatar.scss.js +6 -0
  32. package/dist/v2/components/UserAvatar/index.d.ts +2 -0
  33. package/dist/v2/components/UserAvatar/index.d.ts.map +1 -0
  34. package/dist/v2/components/UserPanel/UserPanel.d.ts +17 -0
  35. package/dist/v2/components/UserPanel/UserPanel.d.ts.map +1 -0
  36. package/dist/v2/components/UserPanel/UserPanel.js +144 -0
  37. package/dist/v2/components/UserPanel/UserPanel.scss.js +6 -0
  38. package/dist/v2/components/UserPanel/index.d.ts +3 -0
  39. package/dist/v2/components/UserPanel/index.d.ts.map +1 -0
  40. package/dist/v2/dashboard-analytics/blog-posts/Blog.d.ts +15 -0
  41. package/dist/v2/dashboard-analytics/blog-posts/Blog.d.ts.map +1 -0
  42. package/dist/v2/dashboard-analytics/blog-posts/index.d.ts +3 -0
  43. package/dist/v2/dashboard-analytics/blog-posts/index.d.ts.map +1 -0
  44. package/dist/v2/dashboard-analytics/chart/Chart.d.ts +21 -0
  45. package/dist/v2/dashboard-analytics/chart/Chart.d.ts.map +1 -0
  46. package/dist/v2/dashboard-analytics/chart/index.d.ts +3 -0
  47. package/dist/v2/dashboard-analytics/chart/index.d.ts.map +1 -0
  48. package/dist/v2/dashboard-analytics/dashboard/Dashboard.d.ts +57 -0
  49. package/dist/v2/dashboard-analytics/dashboard/Dashboard.d.ts.map +1 -0
  50. package/dist/v2/dashboard-analytics/dashboard/index.d.ts +3 -0
  51. package/dist/v2/dashboard-analytics/dashboard/index.d.ts.map +1 -0
  52. package/dist/v2/dashboard-analytics/index.d.ts +13 -0
  53. package/dist/v2/dashboard-analytics/index.d.ts.map +1 -0
  54. package/dist/v2/dashboard-analytics/metric-card/MetricCard.d.ts +17 -0
  55. package/dist/v2/dashboard-analytics/metric-card/MetricCard.d.ts.map +1 -0
  56. package/dist/v2/dashboard-analytics/metric-card/index.d.ts +3 -0
  57. package/dist/v2/dashboard-analytics/metric-card/index.d.ts.map +1 -0
  58. package/dist/v2/dashboard-analytics/venue-card/VenueCard.d.ts +12 -0
  59. package/dist/v2/dashboard-analytics/venue-card/VenueCard.d.ts.map +1 -0
  60. package/dist/v2/dashboard-analytics/venue-card/index.d.ts +3 -0
  61. package/dist/v2/dashboard-analytics/venue-card/index.d.ts.map +1 -0
  62. package/dist/v2/dashboard-analytics/venue-closed-card/VenueClosedCard.d.ts +25 -0
  63. package/dist/v2/dashboard-analytics/venue-closed-card/VenueClosedCard.d.ts.map +1 -0
  64. package/dist/v2/dashboard-analytics/venue-closed-card/index.d.ts +3 -0
  65. package/dist/v2/dashboard-analytics/venue-closed-card/index.d.ts.map +1 -0
  66. package/dist/v2/index.d.ts +11 -5
  67. package/dist/v2/index.d.ts.map +1 -1
  68. package/dist/v2/navigation/DashboardLayout/AdminSidebar.d.ts +10 -0
  69. package/dist/v2/navigation/DashboardLayout/AdminSidebar.d.ts.map +1 -0
  70. package/dist/v2/navigation/DashboardLayout/AdminSidebar.js +296 -0
  71. package/dist/v2/navigation/DashboardLayout/AdminSidebar.scss.js +6 -0
  72. package/dist/v2/navigation/DashboardLayout/DashboardFooter.d.ts +7 -0
  73. package/dist/v2/navigation/DashboardLayout/DashboardFooter.d.ts.map +1 -0
  74. package/dist/v2/navigation/DashboardLayout/DashboardFooter.js +34 -0
  75. package/dist/v2/navigation/DashboardLayout/DashboardFooter.scss.js +6 -0
  76. package/dist/v2/navigation/DashboardLayout/DashboardLayout.d.ts +42 -0
  77. package/dist/v2/navigation/DashboardLayout/DashboardLayout.d.ts.map +1 -0
  78. package/dist/v2/navigation/DashboardLayout/DashboardLayout.js +176 -0
  79. package/dist/v2/navigation/DashboardLayout/DashboardLayout.scss.js +6 -0
  80. package/dist/v2/navigation/DashboardLayout/ProviderSidebar.d.ts +35 -0
  81. package/dist/v2/navigation/DashboardLayout/ProviderSidebar.d.ts.map +1 -0
  82. package/dist/v2/navigation/DashboardLayout/ProviderSidebar.js +366 -0
  83. package/dist/v2/navigation/DashboardLayout/ProviderSidebar.scss.js +6 -0
  84. package/dist/v2/navigation/DashboardLayout/TopNavigation.d.ts +26 -0
  85. package/dist/v2/navigation/DashboardLayout/TopNavigation.d.ts.map +1 -0
  86. package/dist/v2/navigation/DashboardLayout/TopNavigation.js +360 -0
  87. package/dist/v2/navigation/DashboardLayout/TopNavigation.scss.js +6 -0
  88. package/dist/v2/navigation/DashboardLayout/assets/AdminLogo.png.js +3 -0
  89. package/dist/v2/navigation/DashboardLayout/assets/BookedLogo_Mark.png.js +3 -0
  90. package/dist/v2/navigation/DashboardLayout/index.d.ts +7 -0
  91. package/dist/v2/navigation/DashboardLayout/index.d.ts.map +1 -0
  92. package/package.json +5 -3
  93. package/src/assets/Trend-Down.svg +3 -0
  94. package/src/assets/Trend-Up.svg +3 -0
  95. package/src/auth/Authorizer.tsx +49 -20
  96. package/src/index.ts +2 -1
  97. package/src/v2/components/EntityHeader/EntityHeader.scss +133 -0
  98. package/src/v2/components/EntityHeader/EntityHeader.stories.tsx +103 -0
  99. package/src/v2/components/EntityHeader/EntityHeader.tsx +76 -0
  100. package/src/v2/components/EntityHeader/index.ts +1 -0
  101. package/src/v2/components/NPSScore/NPSScore.scss +330 -0
  102. package/src/v2/components/NPSScore/NPSScore.stories.tsx +29 -0
  103. package/src/v2/components/NPSScore/NPSScore.tsx +209 -0
  104. package/src/v2/components/NPSScore/index.ts +2 -0
  105. package/src/v2/components/Select/Select.scss +188 -0
  106. package/src/v2/components/Select/Select.stories.tsx +164 -0
  107. package/src/v2/components/Select/Select.tsx +56 -0
  108. package/src/v2/components/Select/index.ts +2 -0
  109. package/src/v2/components/Tooltip/Tooltip.scss +92 -0
  110. package/src/v2/components/Tooltip/Tooltip.stories.tsx +164 -0
  111. package/src/v2/components/Tooltip/Tooltip.tsx +64 -0
  112. package/src/v2/components/Tooltip/index.ts +8 -0
  113. package/src/v2/components/UserAvatar/UserAvatar.scss +62 -0
  114. package/src/v2/components/UserAvatar/UserAvatar.stories.tsx +94 -0
  115. package/src/v2/components/UserAvatar/UserAvatar.tsx +96 -0
  116. package/src/v2/components/UserAvatar/index.ts +1 -0
  117. package/src/v2/components/UserPanel/UserPanel.scss +195 -0
  118. package/src/v2/components/UserPanel/UserPanel.stories.tsx +66 -0
  119. package/src/v2/components/UserPanel/UserPanel.tsx +126 -0
  120. package/src/v2/components/UserPanel/index.ts +2 -0
  121. package/src/v2/dashboard-analytics/blog-posts/Blog.scss +92 -0
  122. package/src/v2/dashboard-analytics/blog-posts/Blog.stories.tsx +57 -0
  123. package/src/v2/dashboard-analytics/blog-posts/Blog.tsx +91 -0
  124. package/src/v2/dashboard-analytics/blog-posts/index.ts +2 -0
  125. package/src/v2/dashboard-analytics/chart/Chart.scss +424 -0
  126. package/src/v2/dashboard-analytics/chart/Chart.stories.tsx +157 -0
  127. package/src/v2/dashboard-analytics/chart/Chart.tsx +623 -0
  128. package/src/v2/dashboard-analytics/chart/index.ts +2 -0
  129. package/src/v2/dashboard-analytics/dashboard/Dashboard.scss +254 -0
  130. package/src/v2/dashboard-analytics/dashboard/Dashboard.stories.tsx +298 -0
  131. package/src/v2/dashboard-analytics/dashboard/Dashboard.tsx +248 -0
  132. package/src/v2/dashboard-analytics/dashboard/index.ts +2 -0
  133. package/src/v2/dashboard-analytics/index.ts +12 -0
  134. package/src/v2/dashboard-analytics/metric-card/MetricCard.scss +125 -0
  135. package/src/v2/dashboard-analytics/metric-card/MetricCard.stories.tsx +106 -0
  136. package/src/v2/dashboard-analytics/metric-card/MetricCard.tsx +72 -0
  137. package/src/v2/dashboard-analytics/metric-card/index.ts +2 -0
  138. package/src/v2/dashboard-analytics/venue-card/VenueCard.scss +112 -0
  139. package/src/v2/dashboard-analytics/venue-card/VenueCard.stories.tsx +40 -0
  140. package/src/v2/dashboard-analytics/venue-card/VenueCard.tsx +62 -0
  141. package/src/v2/dashboard-analytics/venue-card/index.ts +2 -0
  142. package/src/v2/dashboard-analytics/venue-closed-card/VenueClosedCard.scss +129 -0
  143. package/src/v2/dashboard-analytics/venue-closed-card/VenueClosedCard.stories.tsx +31 -0
  144. package/src/v2/dashboard-analytics/venue-closed-card/VenueClosedCard.tsx +61 -0
  145. package/src/v2/dashboard-analytics/venue-closed-card/index.ts +2 -0
  146. package/src/v2/design-system/colors/ColorSystem.scss +439 -0
  147. package/src/v2/design-system/colors/ColorSystem.stories.tsx +730 -0
  148. package/src/v2/design-system/typography/Typography.scss +295 -0
  149. package/src/v2/design-system/typography/Typography.stories.tsx +109 -0
  150. package/src/v2/index.ts +43 -7
  151. package/src/v2/navigation/DashboardLayout/AdminSidebar.scss +207 -0
  152. package/src/v2/navigation/DashboardLayout/AdminSidebar.tsx +171 -0
  153. package/src/v2/navigation/DashboardLayout/DashboardFooter.scss +30 -0
  154. package/src/v2/navigation/DashboardLayout/DashboardFooter.tsx +25 -0
  155. package/src/v2/navigation/DashboardLayout/DashboardLayout.scss +91 -0
  156. package/src/v2/navigation/DashboardLayout/DashboardLayout.stories.tsx +370 -0
  157. package/src/v2/navigation/DashboardLayout/DashboardLayout.tsx +233 -0
  158. package/src/v2/navigation/DashboardLayout/ProviderSidebar.scss +271 -0
  159. package/src/v2/navigation/DashboardLayout/ProviderSidebar.tsx +266 -0
  160. package/src/v2/navigation/DashboardLayout/Sidebar.stories.tsx +220 -0
  161. package/src/v2/navigation/DashboardLayout/TopNavigation.scss +206 -0
  162. package/src/v2/navigation/DashboardLayout/TopNavigation.tsx +279 -0
  163. package/src/v2/navigation/DashboardLayout/assets/AdminLogo.png +0 -0
  164. package/src/v2/navigation/DashboardLayout/assets/BookedLogo_Mark.png +0 -0
  165. package/src/v2/navigation/DashboardLayout/index.ts +20 -0
  166. package/src/v2/styles/index.scss +0 -1
  167. package/src/v2/styles/tokens/_colors.scss +531 -98
  168. package/dist/v2/components/Colors/Colors.d.ts +0 -21
  169. package/dist/v2/components/Colors/Colors.d.ts.map +0 -1
  170. package/dist/v2/components/Colors/index.d.ts +0 -3
  171. package/dist/v2/components/Colors/index.d.ts.map +0 -1
  172. package/dist/v2/components/Typography/Typography.d.ts +0 -11
  173. package/dist/v2/components/Typography/Typography.d.ts.map +0 -1
  174. package/dist/v2/components/Typography/index.d.ts +0 -3
  175. package/dist/v2/components/Typography/index.d.ts.map +0 -1
  176. package/src/v2/components/Colors/Colors.scss +0 -64
  177. package/src/v2/components/Colors/Colors.stories.tsx +0 -143
  178. package/src/v2/components/Colors/Colors.tsx +0 -51
  179. package/src/v2/components/Colors/ColorsAliases.stories.tsx +0 -285
  180. package/src/v2/components/Colors/Sizes.stories.tsx +0 -141
  181. package/src/v2/components/Colors/index.ts +0 -2
  182. package/src/v2/components/Typography/Typography.scss +0 -72
  183. package/src/v2/components/Typography/Typography.stories.tsx +0 -266
  184. package/src/v2/components/Typography/Typography.tsx +0 -56
  185. package/src/v2/components/Typography/index.ts +0 -2
  186. package/src/v2/styles/tokens/_aliases.scss +0 -199
@@ -0,0 +1,295 @@
1
+ /* Typography tokens and mixins derived from BKIT Design System
2
+ * Spec: https://www.figma.com/design/HPb8SEwQH2rrFAD2sRlKei/BKIT---Booked-Kit?node-id=30-95&m=dev
3
+ */
4
+
5
+ :root {
6
+ /* Font Families */
7
+ --font-family-sans: 'Geist', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif;
8
+ --font-family-mono: 'Geist Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
9
+
10
+ /* Headings Desktop */
11
+ --heading-xxl-size: 44px;
12
+ --heading-xxl-line: 48px;
13
+ --heading-xxl-weight: 600;
14
+ --heading-xl-size: 32px;
15
+ --heading-xl-line: 36px;
16
+ --heading-xl-weight: 700;
17
+ --heading-h1-size: 24px;
18
+ --heading-h1-line: 28px;
19
+ --heading-h1-weight: 600;
20
+ --heading-h2-size: 20px;
21
+ --heading-h2-line: 24px;
22
+ --heading-h2-weight: 600;
23
+ --heading-h3-size: 17px;
24
+ --heading-h3-line: 20px;
25
+ --heading-h3-weight: 600;
26
+ --heading-h4-size: 15px;
27
+ --heading-h4-line: 18px;
28
+ --heading-h4-weight: 600;
29
+ --heading-h5-size: 13px;
30
+ --heading-h5-line: 16px;
31
+ --heading-h5-weight: 500;
32
+ --heading-h6-size: 11px;
33
+ --heading-h6-line: 14px;
34
+ --heading-h6-weight: 500;
35
+
36
+ /* Headings Mobile */
37
+ --heading-xxl-mobile-size: 32px;
38
+ --heading-xxl-mobile-line: 36px;
39
+ --heading-xxl-mobile-weight: 600;
40
+ --heading-xl-mobile-size: 26px;
41
+ --heading-xl-mobile-line: 30px;
42
+ --heading-xl-mobile-weight: 700;
43
+ --heading-h1-mobile-size: 20px;
44
+ --heading-h1-mobile-line: 23px;
45
+ --heading-h1-mobile-weight: 600;
46
+ --heading-h2-mobile-size: 18px;
47
+ --heading-h2-mobile-line: 22px;
48
+ --heading-h2-mobile-weight: 600;
49
+ --heading-h3-mobile-size: 16px;
50
+ --heading-h3-mobile-line: 18px;
51
+ --heading-h3-mobile-weight: 600;
52
+ --heading-h4-mobile-size: 14px;
53
+ --heading-h4-mobile-line: 16px;
54
+ --heading-h4-mobile-weight: 600;
55
+ --heading-h5-mobile-size: 13px;
56
+ --heading-h5-mobile-line: 16px;
57
+ --heading-h5-mobile-weight: 500;
58
+ --heading-h6-mobile-size: 11px;
59
+ --heading-h6-mobile-line: 14px;
60
+ --heading-h6-mobile-weight: 500;
61
+
62
+ /* Body Desktop */
63
+ --text-xl-size: 20px;
64
+ --text-xl-line: 26px;
65
+ --text-xl-weight: 400;
66
+ --text-large-size: 18px;
67
+ --text-large-line: 24px;
68
+ --text-large-weight: 400;
69
+ --text-regular-size: 15px;
70
+ --text-regular-line: 20px;
71
+ --text-regular-weight: 400;
72
+ --text-regular-emphasis-weight: 500;
73
+ --text-small-size: 13px;
74
+ --text-small-line: 16px;
75
+ --text-small-weight: 400;
76
+ --text-small-emphasis-weight: 500;
77
+ --text-small-bold-weight: 600;
78
+ --text-xs-size: 10px;
79
+ --text-xs-line: 13px;
80
+ --text-xs-weight: 500;
81
+ --text-xs-bold-weight: 600;
82
+ }
83
+
84
+ /* Breakpoint */
85
+ $bp-mobile-max: 767px;
86
+
87
+ /* Typography variant map */
88
+ $typo-map: (
89
+ 'heading.xxl': (var(--heading-xxl-size), var(--heading-xxl-line), var(--heading-xxl-weight), var(--font-family-sans)),
90
+ 'heading.xl': (var(--heading-xl-size), var(--heading-xl-line), var(--heading-xl-weight), var(--font-family-sans)),
91
+ 'heading.h1': (var(--heading-h1-size), var(--heading-h1-line), var(--heading-h1-weight), var(--font-family-sans)),
92
+ 'heading.h2': (var(--heading-h2-size), var(--heading-h2-line), var(--heading-h2-weight), var(--font-family-sans)),
93
+ 'heading.h3': (var(--heading-h3-size), var(--heading-h3-line), var(--heading-h3-weight), var(--font-family-sans)),
94
+ 'heading.h4': (var(--heading-h4-size), var(--heading-h4-line), var(--heading-h4-weight), var(--font-family-sans)),
95
+ 'heading.h5': (var(--heading-h5-size), var(--heading-h5-line), var(--heading-h5-weight), var(--font-family-sans)),
96
+ 'heading.h6': (var(--heading-h6-size), var(--heading-h6-line), var(--heading-h6-weight), var(--font-family-sans)),
97
+
98
+ 'heading.xxl.mobile': (var(--heading-xxl-mobile-size), var(--heading-xxl-mobile-line), var(--heading-xxl-mobile-weight), var(--font-family-sans)),
99
+ 'heading.xl.mobile': (var(--heading-xl-mobile-size), var(--heading-xl-mobile-line), var(--heading-xl-mobile-weight), var(--font-family-sans)),
100
+ 'heading.h1.mobile': (var(--heading-h1-mobile-size), var(--heading-h1-mobile-line), var(--heading-h1-mobile-weight), var(--font-family-sans)),
101
+ 'heading.h2.mobile': (var(--heading-h2-mobile-size), var(--heading-h2-mobile-line), var(--heading-h2-mobile-weight), var(--font-family-sans)),
102
+ 'heading.h3.mobile': (var(--heading-h3-mobile-size), var(--heading-h3-mobile-line), var(--heading-h3-mobile-weight), var(--font-family-sans)),
103
+ 'heading.h4.mobile': (var(--heading-h4-mobile-size), var(--heading-h4-mobile-line), var(--heading-h4-mobile-weight), var(--font-family-sans)),
104
+ 'heading.h5.mobile': (var(--heading-h5-mobile-size), var(--heading-h5-mobile-line), var(--heading-h5-mobile-weight), var(--font-family-sans)),
105
+ 'heading.h6.mobile': (var(--heading-h6-mobile-size), var(--heading-h6-mobile-line), var(--heading-h6-mobile-weight), var(--font-family-sans)),
106
+
107
+ 'text.xl': (var(--text-xl-size), var(--text-xl-line), var(--text-xl-weight), var(--font-family-sans)),
108
+ 'text.large': (var(--text-large-size), var(--text-large-line), var(--text-large-weight), var(--font-family-sans)),
109
+ 'text.regular': (var(--text-regular-size), var(--text-regular-line), var(--text-regular-weight), var(--font-family-sans)),
110
+ 'text.regular.emphasis': (var(--text-regular-size), var(--text-regular-line), var(--text-regular-emphasis-weight), var(--font-family-sans)),
111
+ 'text.small': (var(--text-small-size), var(--text-small-line), var(--text-small-weight), var(--font-family-sans)),
112
+ 'text.small.emphasis': (var(--text-small-size), var(--text-small-line), var(--text-small-emphasis-weight), var(--font-family-sans)),
113
+ 'text.small.bold': (var(--text-small-size), var(--text-small-line), var(--text-small-bold-weight), var(--font-family-sans)),
114
+ 'text.xs': (var(--text-xs-size), var(--text-xs-line), var(--text-xs-weight), var(--font-family-sans)),
115
+ 'text.xs.bold': (var(--text-xs-size), var(--text-xs-line), var(--text-xs-bold-weight), var(--font-family-sans))
116
+ );
117
+
118
+ @mixin apply-typo($tuple) {
119
+ $size: nth($tuple, 1);
120
+ $line: nth($tuple, 2);
121
+ $weight: nth($tuple, 3);
122
+ $family: nth($tuple, 4);
123
+ font-family: $family;
124
+ font-size: $size;
125
+ line-height: $line;
126
+ font-weight: $weight;
127
+ letter-spacing: 0;
128
+ }
129
+
130
+ @mixin typography($variant) {
131
+ @if map-has-key($typo-map, $variant) {
132
+ @include apply-typo(map-get($typo-map, $variant));
133
+ } @else {
134
+ @include apply-typo(map-get($typo-map, 'text.regular'));
135
+ }
136
+ }
137
+
138
+ /* Convenience mixin that switches to mobile variant under mobile breakpoint */
139
+ @mixin responsive-heading($desktopVariant, $mobileVariant) {
140
+ @include typography($desktopVariant);
141
+
142
+ @media (max-width: $bp-mobile-max) {
143
+ @include typography($mobileVariant);
144
+ }
145
+ }
146
+
147
+ /* Legacy classes for backward compatibility - force Geist font */
148
+ .heading-desktop-xxl { @include typography('heading.xxl'); font-family: var(--font-family-sans) !important; }
149
+ .heading-desktop-xl { @include typography('heading.xl'); font-family: var(--font-family-sans) !important; }
150
+ .heading-desktop-h1 { @include typography('heading.h1'); font-family: var(--font-family-sans) !important; }
151
+ .heading-desktop-h2 { @include typography('heading.h2'); font-family: var(--font-family-sans) !important; }
152
+ .heading-desktop-h3 { @include typography('heading.h3'); font-family: var(--font-family-sans) !important; }
153
+ .heading-desktop-h4 { @include typography('heading.h4'); font-family: var(--font-family-sans) !important; }
154
+ .heading-desktop-h5 { @include typography('heading.h5'); font-family: var(--font-family-sans) !important; }
155
+ .heading-desktop-h6 { @include typography('heading.h6'); font-family: var(--font-family-sans) !important; }
156
+
157
+ .heading-mobile-xxl { @include typography('heading.xxl.mobile'); font-family: var(--font-family-sans) !important; }
158
+ .heading-mobile-xl { @include typography('heading.xl.mobile'); font-family: var(--font-family-sans) !important; }
159
+ .heading-mobile-h1 { @include typography('heading.h1.mobile'); font-family: var(--font-family-sans) !important; }
160
+ .heading-mobile-h2 { @include typography('heading.h2.mobile'); font-family: var(--font-family-sans) !important; }
161
+ .heading-mobile-h3 { @include typography('heading.h3.mobile'); font-family: var(--font-family-sans) !important; }
162
+ .heading-mobile-h4 { @include typography('heading.h4.mobile'); font-family: var(--font-family-sans) !important; }
163
+ .heading-mobile-h5 { @include typography('heading.h5.mobile'); font-family: var(--font-family-sans) !important; }
164
+ .heading-mobile-h6 { @include typography('heading.h6.mobile'); font-family: var(--font-family-sans) !important; }
165
+
166
+ .body-desktop-xl { @include typography('text.xl'); font-family: var(--font-family-sans) !important; }
167
+ .body-desktop-large { @include typography('text.large'); font-family: var(--font-family-sans) !important; }
168
+ .body-desktop-regular { @include typography('text.regular'); font-family: var(--font-family-sans) !important; }
169
+ .body-desktop-regular-emphasis { @include typography('text.regular.emphasis'); font-family: var(--font-family-sans) !important; }
170
+ .body-desktop-small { @include typography('text.small'); font-family: var(--font-family-sans) !important; }
171
+ .body-desktop-small-emphasis { @include typography('text.small.emphasis'); font-family: var(--font-family-sans) !important; }
172
+ .body-desktop-small-bold { @include typography('text.small.bold'); font-family: var(--font-family-sans) !important; }
173
+ .body-desktop-xs { @include typography('text.xs'); font-family: var(--font-family-sans) !important; }
174
+ .body-desktop-xs-bold { @include typography('text.xs.bold'); font-family: var(--font-family-sans) !important; }
175
+
176
+ /* Force Geist font for BKIT Typography stories */
177
+ [id*="v2-design-system-typography"] {
178
+ * {
179
+ font-family: var(--font-family-sans) !important;
180
+ }
181
+ }
182
+
183
+ /* Storybook display styles */
184
+ .typography-story {
185
+ padding: 2rem;
186
+ max-width: 1200px;
187
+ margin: 0 auto;
188
+ font-family: var(--font-family-sans) !important;
189
+
190
+ * {
191
+ font-family: inherit !important;
192
+ }
193
+ }
194
+
195
+ .story-header {
196
+ margin-bottom: 3rem;
197
+
198
+ h1 {
199
+ @include typography('heading.h1');
200
+ color: var(--label-primary, #121E52);
201
+ margin: 0 0 0.5rem 0;
202
+ }
203
+
204
+ p {
205
+ @include typography('text.regular');
206
+ color: var(--label-secondary, #626A90);
207
+ margin: 0;
208
+ }
209
+ }
210
+
211
+ .typography-section {
212
+ margin-bottom: 3rem;
213
+ }
214
+
215
+ .typography-section__title {
216
+ @include typography('heading.h2');
217
+ color: var(--label-primary, #121E52);
218
+ margin: 0 0 2rem 0;
219
+ border-bottom: 2px solid var(--border-primary, #E8E9EF);
220
+ padding-bottom: 1rem;
221
+ }
222
+
223
+ .typography-grid {
224
+ display: grid;
225
+ gap: 2rem;
226
+ }
227
+
228
+ .typography-example {
229
+ display: grid;
230
+ grid-template-columns: 1fr auto;
231
+ gap: 2rem;
232
+ align-items: center;
233
+ padding: 1.5rem;
234
+ border: 1px solid var(--border-primary, #E8E9EF);
235
+ border-radius: 8px;
236
+ background: var(--surface-primary, #FFFFFF);
237
+ }
238
+
239
+ .typography-sample {
240
+ color: var(--label-primary, #121E52);
241
+ }
242
+
243
+ .typography-info {
244
+ min-width: 200px;
245
+ text-align: right;
246
+ }
247
+
248
+ .typography-name {
249
+ @include typography('text.small.emphasis');
250
+ color: var(--label-primary, #121E52);
251
+ margin-bottom: 0.25rem;
252
+ }
253
+
254
+ .typography-specs {
255
+ display: flex;
256
+ gap: 1rem;
257
+ justify-content: flex-end;
258
+ margin-bottom: 0.25rem;
259
+ }
260
+
261
+ .typography-size,
262
+ .typography-weight {
263
+ @include typography('text.xs');
264
+ font-family: var(--font-family-mono);
265
+ padding: 0.25rem 0.5rem;
266
+ border-radius: 4px;
267
+ background: var(--surface-secondary, #F8F8FA);
268
+ color: var(--label-secondary, #626A90);
269
+ }
270
+
271
+ .typography-description {
272
+ @include typography('text.xs');
273
+ color: var(--label-secondary, #626A90);
274
+ font-style: italic;
275
+ }
276
+
277
+ /* Responsive adjustments */
278
+ @media (max-width: 768px) {
279
+ .typography-story {
280
+ padding: 1rem;
281
+ }
282
+
283
+ .typography-example {
284
+ grid-template-columns: 1fr;
285
+ gap: 1rem;
286
+ }
287
+
288
+ .typography-info {
289
+ text-align: left;
290
+ }
291
+
292
+ .typography-specs {
293
+ justify-content: flex-start;
294
+ }
295
+ }
@@ -0,0 +1,109 @@
1
+ import React from 'react';
2
+ import { Meta } from '@storybook/react';
3
+ import './Typography.scss';
4
+
5
+ const meta: Meta = {
6
+ title: 'v2/Design System/Typography',
7
+ parameters: {
8
+ docs: {
9
+ description: {
10
+ component: 'BKIT Typography system with Geist font family and comprehensive text styles.'
11
+ }
12
+ }
13
+ }
14
+ };
15
+
16
+ export default meta;
17
+
18
+ const TypographyShowcase = ({ title, styles }: { title: string; styles: Array<{ name: string; className: string; size: string; weight: string; description?: string }> }) => (
19
+ <div className="typography-section">
20
+ <h3 className="typography-section__title">{title}</h3>
21
+ <div className="typography-grid">
22
+ {styles.map(({ name, className, size, weight, description }) => (
23
+ <div key={name} className="typography-example">
24
+ <div className={`typography-sample ${className}`}>
25
+ The quick brown fox jumps over the lazy dog
26
+ </div>
27
+ <div className="typography-info">
28
+ <div className="typography-name">{name}</div>
29
+ <div className="typography-specs">
30
+ <span className="typography-size">{size}</span>
31
+ <span className="typography-weight">{weight}</span>
32
+ </div>
33
+ {description && <div className="typography-description">{description}</div>}
34
+ </div>
35
+ </div>
36
+ ))}
37
+ </div>
38
+ </div>
39
+ );
40
+
41
+ export const DesktopHeadings = () => (
42
+ <div className="typography-story">
43
+ <div className="story-header">
44
+ <h1>Desktop Headings</h1>
45
+ <p>Heading styles optimized for desktop viewing</p>
46
+ </div>
47
+
48
+ <TypographyShowcase
49
+ title="Desktop Headings"
50
+ styles={[
51
+ { name: 'Heading XXL', className: 'heading-desktop-xxl', size: '44px', weight: 'SemiBold', description: 'Hero headings and large displays' },
52
+ { name: 'Heading XL', className: 'heading-desktop-xl', size: '32px', weight: 'Bold', description: 'Page titles and major sections' },
53
+ { name: 'Heading H1', className: 'heading-desktop-h1', size: '24px', weight: 'SemiBold', description: 'Primary page headings' },
54
+ { name: 'Heading H2', className: 'heading-desktop-h2', size: '20px', weight: 'SemiBold', description: 'Section headings' },
55
+ { name: 'Heading H3', className: 'heading-desktop-h3', size: '17px', weight: 'SemiBold', description: 'Subsection headings' },
56
+ { name: 'Heading H4', className: 'heading-desktop-h4', size: '15px', weight: 'SemiBold', description: 'Card titles and labels' },
57
+ { name: 'Heading H5', className: 'heading-desktop-h5', size: '13px', weight: 'Medium', description: 'Small headings' },
58
+ { name: 'Heading H6', className: 'heading-desktop-h6', size: '11px', weight: 'Medium', description: 'Micro headings' }
59
+ ]}
60
+ />
61
+ </div>
62
+ );
63
+
64
+ export const MobileHeadings = () => (
65
+ <div className="typography-story">
66
+ <div className="story-header">
67
+ <h1>Mobile Headings</h1>
68
+ <p>Heading styles optimized for mobile viewing</p>
69
+ </div>
70
+
71
+ <TypographyShowcase
72
+ title="Mobile Headings"
73
+ styles={[
74
+ { name: 'Mobile XXL', className: 'heading-mobile-xxl', size: '32px', weight: 'SemiBold', description: 'Mobile hero headings' },
75
+ { name: 'Mobile XL', className: 'heading-mobile-xl', size: '26px', weight: 'Bold', description: 'Mobile page titles' },
76
+ { name: 'Mobile H1', className: 'heading-mobile-h1', size: '20px', weight: 'SemiBold', description: 'Mobile primary headings' },
77
+ { name: 'Mobile H2', className: 'heading-mobile-h2', size: '18px', weight: 'SemiBold', description: 'Mobile section headings' },
78
+ { name: 'Mobile H3', className: 'heading-mobile-h3', size: '16px', weight: 'SemiBold', description: 'Mobile subsection headings' },
79
+ { name: 'Mobile H4', className: 'heading-mobile-h4', size: '14px', weight: 'SemiBold', description: 'Mobile card titles' },
80
+ { name: 'Mobile H5', className: 'heading-mobile-h5', size: '13px', weight: 'Medium', description: 'Mobile small headings' },
81
+ { name: 'Mobile H6', className: 'heading-mobile-h6', size: '11px', weight: 'Medium', description: 'Mobile micro headings' }
82
+ ]}
83
+ />
84
+ </div>
85
+ );
86
+
87
+ export const BodyText = () => (
88
+ <div className="typography-story">
89
+ <div className="story-header">
90
+ <h1>Body Text</h1>
91
+ <p>Body text styles for content and interface text</p>
92
+ </div>
93
+
94
+ <TypographyShowcase
95
+ title="Body Text Styles"
96
+ styles={[
97
+ { name: 'Body XL', className: 'body-desktop-xl', size: '20px', weight: 'Regular', description: 'Large body text for emphasis' },
98
+ { name: 'Body Large', className: 'body-desktop-large', size: '18px', weight: 'Regular', description: 'Large body text' },
99
+ { name: 'Body Regular', className: 'body-desktop-regular', size: '15px', weight: 'Regular', description: 'Standard body text' },
100
+ { name: 'Body Regular Emphasis', className: 'body-desktop-regular-emphasis', size: '15px', weight: 'Medium', description: 'Emphasized body text' },
101
+ { name: 'Body Small', className: 'body-desktop-small', size: '13px', weight: 'Regular', description: 'Small body text' },
102
+ { name: 'Body Small Emphasis', className: 'body-desktop-small-emphasis', size: '13px', weight: 'Medium', description: 'Small emphasized text' },
103
+ { name: 'Body Small Bold', className: 'body-desktop-small-bold', size: '13px', weight: 'SemiBold', description: 'Small bold text' },
104
+ { name: 'Body XS', className: 'body-desktop-xs', size: '10px', weight: 'Medium', description: 'Extra small text' },
105
+ { name: 'Body XS Bold', className: 'body-desktop-xs-bold', size: '10px', weight: 'SemiBold', description: 'Extra small bold text' }
106
+ ]}
107
+ />
108
+ </div>
109
+ );
package/src/v2/index.ts CHANGED
@@ -21,13 +21,20 @@ export type { AlertProps, AlertVariant } from './components/Alert'
21
21
  export { Button } from './components/Button'
22
22
  export type { ButtonProps } from './components/Button'
23
23
 
24
- // Colors Showcase
25
- export { ColorsShowcase, ColorSwatch } from './components/Colors'
26
- export type { ColorGroup } from './components/Colors'
24
+ // EntityHeader Component
25
+ export { EntityHeader } from './components/EntityHeader'
26
+ export type { EntityHeaderProps } from './components/EntityHeader'
27
27
 
28
- // Typography Component
29
- export { Typography } from './components/Typography'
30
- export type { TypographyProps, TypographyVariant } from './components/Typography'
28
+ // Tooltip Component
29
+ export { Tooltip } from './components/Tooltip'
30
+ export type { TooltipProps } from './components/Tooltip'
31
+ // NPSScore Component
32
+ export { NPSScore } from './components/NPSScore'
33
+ export type { NPSScoreProps, NPSSubmitData } from './components/NPSScore'
34
+
35
+ // UserPanel Component
36
+ export { UserPanel } from './components/UserPanel'
37
+ export type { UserPanelProps } from './components/UserPanel'
31
38
 
32
39
  // ============================================================================
33
40
  // Navigation Components
@@ -68,6 +75,35 @@ export type { SidebarUserElementProps } from './navigation/SidebarUserElement'
68
75
  export { SidebarWithAuth } from './navigation/SidebarWithAuth'
69
76
  export type { SidebarWithAuthProps } from './navigation/SidebarWithAuth'
70
77
 
78
+ // Dashboard Layout (Complete layout with sidebar, tophat, and content area)
79
+ export {
80
+ DashboardLayout,
81
+ ProviderSidebar,
82
+ AdminSidebar,
83
+ TopNavigation,
84
+ DashboardFooter,
85
+ // Sidebar Icons
86
+ HomeIcon,
87
+ FlowsIcon,
88
+ InventoryIcon,
89
+ LoyaltyIcon,
90
+ CustomersIcon,
91
+ ReportsIcon,
92
+ AnalyticsIcon,
93
+ MarketingIcon,
94
+ WaiversIcon,
95
+ SettingsIcon,
96
+ } from './navigation/DashboardLayout'
97
+ export type {
98
+ DashboardLayoutProps,
99
+ DestinationType,
100
+ ProviderSidebarProps,
101
+ NavItem,
102
+ AdminSidebarProps,
103
+ TopNavigationProps,
104
+ DashboardFooterProps
105
+ } from './navigation/DashboardLayout'
106
+
71
107
  // Navigation Configuration
72
108
  export { NAVIGATION_ITEMS } from './navigation/config'
73
109
 
@@ -84,7 +120,7 @@ export { useAuth, useCanAccess } from './hooks/useAuth'
84
120
  // Types
85
121
  // ============================================================================
86
122
 
87
- export type { NavigationItem, AuthCredentials } from './types/navigation'
123
+ export type { AuthCredentials } from './types/navigation'
88
124
 
89
125
  // ============================================================================
90
126
  // Design Tokens
@@ -0,0 +1,207 @@
1
+ .admin-sidebar {
2
+ background: var(--surfaces-main-background-secondary, #F8F8FA);
3
+ border-right: 1px solid var(--borders-main-border-primary, #E8E9EF);
4
+ box-sizing: border-box;
5
+ display: flex;
6
+ flex-direction: column;
7
+ align-items: flex-start;
8
+ padding: 8px;
9
+ height: 100%;
10
+ overflow-y: auto;
11
+ transition: width 0.3s ease;
12
+
13
+ &--expanded {
14
+ width: 268px;
15
+ }
16
+
17
+ &--collapsed {
18
+ width: 72px;
19
+ }
20
+
21
+ @media (max-width: 640px) {
22
+ width: 100% !important;
23
+ border-right: none;
24
+ }
25
+
26
+ &__content {
27
+ display: flex;
28
+ flex-direction: column;
29
+ gap: 4px;
30
+ width: 100%;
31
+ }
32
+
33
+ &__header {
34
+ display: flex;
35
+ align-items: center;
36
+ gap: 8px;
37
+ padding: 8px;
38
+ border-radius: 8px;
39
+ background: var(--surfaces-main-background-secondary, #F8F8FA);
40
+ transition: background 0.2s ease;
41
+ cursor: pointer;
42
+ width: 100%;
43
+ box-sizing: border-box;
44
+
45
+ &:hover {
46
+ background: var(--surfaces-main-background-secondary-hover, #F0F0F4);
47
+ }
48
+
49
+ &:active {
50
+ background: var(--surfaces-main-background-secondary-pressed, #E8E8EC);
51
+ }
52
+
53
+ &--collapsed {
54
+ justify-content: center;
55
+ }
56
+ }
57
+
58
+ &__avatar {
59
+ width: 47px;
60
+ height: 47px;
61
+ border-radius: 50%;
62
+ flex-shrink: 0;
63
+ display: flex;
64
+ align-items: center;
65
+ justify-content: center;
66
+ overflow: hidden;
67
+ position: relative;
68
+ border: 2px solid var(--borders-main-border-primary);
69
+ background: var(--surfaces-main-background-secondary);
70
+
71
+ img {
72
+ width: 100%;
73
+ height: 100%;
74
+ object-fit: cover;
75
+ }
76
+ }
77
+
78
+ &__header-text {
79
+ display: flex;
80
+ flex-direction: column;
81
+ gap: 4px;
82
+ min-width: 0;
83
+ flex: 1;
84
+ }
85
+
86
+ &__title {
87
+ font-family: 'Geist', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
88
+ font-weight: 600;
89
+ font-size: 15px;
90
+ line-height: 18px;
91
+ color: var(--labels-main-label-primary, #121E52);
92
+ margin: 0;
93
+ white-space: nowrap;
94
+ overflow: hidden;
95
+ text-overflow: ellipsis;
96
+ }
97
+
98
+ &__badge {
99
+ display: inline-flex;
100
+ align-items: center;
101
+ justify-content: center;
102
+ padding: 4px 8px;
103
+ background: var(--surfaces-main-background-tertiary, #E8E9EF);
104
+ border-radius: 8px;
105
+ width: fit-content;
106
+ transition: background 0.2s ease;
107
+
108
+ .admin-sidebar__header:hover & {
109
+ background: var(--surfaces-main-surface-primary, #FFFFFF);
110
+ }
111
+
112
+ span {
113
+ font-family: 'Geist Mono', 'SF Mono', 'Consolas', monospace;
114
+ font-weight: 600;
115
+ font-size: 10px;
116
+ line-height: 12px;
117
+ color: var(--labels-main-label-secondary, #626A90);
118
+ white-space: nowrap;
119
+ }
120
+ }
121
+
122
+ &__nav {
123
+ display: flex;
124
+ flex-direction: column;
125
+ gap: 4px;
126
+ width: 100%;
127
+ padding-top: 8px;
128
+ }
129
+
130
+ &__link {
131
+ box-sizing: border-box;
132
+ display: flex;
133
+ align-items: center;
134
+ gap: 8px;
135
+ padding: 8px;
136
+ border-radius: 8px;
137
+ cursor: pointer;
138
+ transition: all 0.2s ease;
139
+ text-decoration: none;
140
+ outline: none;
141
+ width: 100%;
142
+ color: var(--fills-main-fill-primary, #14215A);
143
+
144
+ &:hover:not(&--active) {
145
+ background: var(--surfaces-main-background-secondary-hover, #F0F0F4);
146
+ }
147
+
148
+ &:active:not(&--active) {
149
+ background: var(--surfaces-main-background-secondary-pressed, #E8E8EC);
150
+ }
151
+
152
+ &:focus-visible {
153
+ outline: 2px solid var(--fills-main-fill-primary, #14215A);
154
+ outline-offset: 2px;
155
+ }
156
+
157
+ &--collapsed {
158
+ justify-content: center;
159
+ }
160
+
161
+ &--active {
162
+ background: linear-gradient(
163
+ to top right,
164
+ var(--gradient-stop3, #0E8CE2) 0%,
165
+ var(--gradient-stop2, #5D5BF4) 50%,
166
+ var(--gradient-stop1, #6200EE) 100%
167
+ );
168
+ color: white;
169
+
170
+ .admin-sidebar__icon {
171
+ color: white;
172
+
173
+ svg path {
174
+ fill: white;
175
+ }
176
+ }
177
+
178
+ .admin-sidebar__link-text {
179
+ color: white;
180
+ }
181
+ }
182
+ }
183
+
184
+ &__icon {
185
+ flex-shrink: 0;
186
+ width: 24px;
187
+ height: 24px;
188
+ display: flex;
189
+ align-items: center;
190
+ justify-content: center;
191
+
192
+ svg {
193
+ width: 100%;
194
+ height: 100%;
195
+ }
196
+ }
197
+
198
+ &__link-text {
199
+ font-family: 'Geist', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
200
+ font-weight: 500;
201
+ font-size: 13px;
202
+ line-height: 16px;
203
+ color: var(--labels-main-label-primary, #121E52);
204
+ margin: 0;
205
+ white-space: nowrap;
206
+ }
207
+ }