@quaffui/quaff 0.1.0-prealpha

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 (278) hide show
  1. package/LICENSE +9 -0
  2. package/README.md +43 -0
  3. package/dist/components/avatar/QAvatar.svelte +43 -0
  4. package/dist/components/avatar/QAvatar.svelte.d.ts +27 -0
  5. package/dist/components/avatar/docs.d.ts +2 -0
  6. package/dist/components/avatar/docs.js +22 -0
  7. package/dist/components/avatar/docs.props.d.ts +8 -0
  8. package/dist/components/avatar/docs.props.js +34 -0
  9. package/dist/components/avatar/index.scss +88 -0
  10. package/dist/components/avatar/props.d.ts +25 -0
  11. package/dist/components/avatar/props.js +1 -0
  12. package/dist/components/breadcrumbs/QBreadcrumbs.svelte +18 -0
  13. package/dist/components/breadcrumbs/QBreadcrumbs.svelte.d.ts +23 -0
  14. package/dist/components/breadcrumbs/QBreadcrumbsEl.svelte +59 -0
  15. package/dist/components/breadcrumbs/QBreadcrumbsEl.svelte.d.ts +26 -0
  16. package/dist/components/breadcrumbs/docs.d.ts +2 -0
  17. package/dist/components/breadcrumbs/docs.js +16 -0
  18. package/dist/components/breadcrumbs/docs.props.d.ts +16 -0
  19. package/dist/components/breadcrumbs/docs.props.js +84 -0
  20. package/dist/components/breadcrumbs/index.scss +20 -0
  21. package/dist/components/breadcrumbs/props.d.ts +56 -0
  22. package/dist/components/breadcrumbs/props.js +1 -0
  23. package/dist/components/button/QBtn.svelte +59 -0
  24. package/dist/components/button/QBtn.svelte.d.ts +32 -0
  25. package/dist/components/button/docs.d.ts +2 -0
  26. package/dist/components/button/docs.js +22 -0
  27. package/dist/components/button/docs.props.d.ts +8 -0
  28. package/dist/components/button/docs.props.js +82 -0
  29. package/dist/components/button/index.scss +78 -0
  30. package/dist/components/button/props.d.ts +54 -0
  31. package/dist/components/button/props.js +1 -0
  32. package/dist/components/card/QCard.svelte +23 -0
  33. package/dist/components/card/QCard.svelte.d.ts +26 -0
  34. package/dist/components/card/QCardActions.svelte +18 -0
  35. package/dist/components/card/QCardActions.svelte.d.ts +22 -0
  36. package/dist/components/card/QCardSection.svelte +14 -0
  37. package/dist/components/card/QCardSection.svelte.d.ts +23 -0
  38. package/dist/components/card/docs.d.ts +4 -0
  39. package/dist/components/card/docs.js +46 -0
  40. package/dist/components/card/docs.props.d.ts +24 -0
  41. package/dist/components/card/docs.props.js +62 -0
  42. package/dist/components/card/index.scss +53 -0
  43. package/dist/components/card/props.d.ts +44 -0
  44. package/dist/components/card/props.js +1 -0
  45. package/dist/components/checkbox/QCheckbox.svelte +14 -0
  46. package/dist/components/checkbox/QCheckbox.svelte.d.ts +21 -0
  47. package/dist/components/checkbox/docs.d.ts +2 -0
  48. package/dist/components/checkbox/docs.js +17 -0
  49. package/dist/components/checkbox/docs.props.d.ts +8 -0
  50. package/dist/components/checkbox/docs.props.js +26 -0
  51. package/dist/components/checkbox/index.scss +3 -0
  52. package/dist/components/checkbox/props.d.ts +17 -0
  53. package/dist/components/checkbox/props.js +1 -0
  54. package/dist/components/chip/QChip.svelte +62 -0
  55. package/dist/components/chip/QChip.svelte.d.ts +35 -0
  56. package/dist/components/chip/docs.d.ts +2 -0
  57. package/dist/components/chip/docs.js +30 -0
  58. package/dist/components/chip/docs.props.d.ts +8 -0
  59. package/dist/components/chip/docs.props.js +90 -0
  60. package/dist/components/chip/index.scss +83 -0
  61. package/dist/components/chip/props.d.ts +59 -0
  62. package/dist/components/chip/props.js +1 -0
  63. package/dist/components/codeBlock/QCodeBlock.svelte +71 -0
  64. package/dist/components/codeBlock/QCodeBlock.svelte.d.ts +23 -0
  65. package/dist/components/codeBlock/docs.props.d.ts +8 -0
  66. package/dist/components/codeBlock/docs.props.js +34 -0
  67. package/dist/components/codeBlock/props.d.ts +20 -0
  68. package/dist/components/codeBlock/props.js +1 -0
  69. package/dist/components/dialog/QDialog.svelte +80 -0
  70. package/dist/components/dialog/QDialog.svelte.d.ts +37 -0
  71. package/dist/components/dialog/docs.d.ts +2 -0
  72. package/dist/components/dialog/docs.js +11 -0
  73. package/dist/components/dialog/docs.props.d.ts +16 -0
  74. package/dist/components/dialog/docs.props.js +148 -0
  75. package/dist/components/dialog/index.scss +27 -0
  76. package/dist/components/dialog/props.d.ts +45 -0
  77. package/dist/components/dialog/props.js +1 -0
  78. package/dist/components/drawer/QDrawer.svelte +87 -0
  79. package/dist/components/drawer/QDrawer.svelte.d.ts +39 -0
  80. package/dist/components/drawer/docs.d.ts +2 -0
  81. package/dist/components/drawer/docs.js +11 -0
  82. package/dist/components/drawer/docs.props.d.ts +8 -0
  83. package/dist/components/drawer/docs.props.js +106 -0
  84. package/dist/components/drawer/index.scss +54 -0
  85. package/dist/components/drawer/props.d.ts +70 -0
  86. package/dist/components/drawer/props.js +1 -0
  87. package/dist/components/footer/QFooter.svelte +14 -0
  88. package/dist/components/footer/QFooter.svelte.d.ts +24 -0
  89. package/dist/components/footer/docs.d.ts +2 -0
  90. package/dist/components/footer/docs.js +11 -0
  91. package/dist/components/footer/docs.props.d.ts +8 -0
  92. package/dist/components/footer/docs.props.js +34 -0
  93. package/dist/components/footer/index.scss +5 -0
  94. package/dist/components/footer/props.d.ts +23 -0
  95. package/dist/components/footer/props.js +1 -0
  96. package/dist/components/icon/QIcon.svelte +40 -0
  97. package/dist/components/icon/QIcon.svelte.d.ts +28 -0
  98. package/dist/components/icon/docs.d.ts +2 -0
  99. package/dist/components/icon/docs.js +11 -0
  100. package/dist/components/icon/docs.props.d.ts +8 -0
  101. package/dist/components/icon/docs.props.js +66 -0
  102. package/dist/components/icon/index.scss +18 -0
  103. package/dist/components/icon/props.d.ts +45 -0
  104. package/dist/components/icon/props.js +1 -0
  105. package/dist/components/index.d.ts +29 -0
  106. package/dist/components/index.js +29 -0
  107. package/dist/components/input/QInput.svelte +81 -0
  108. package/dist/components/input/QInput.svelte.d.ts +32 -0
  109. package/dist/components/input/docs.d.ts +2 -0
  110. package/dist/components/input/docs.js +83 -0
  111. package/dist/components/input/docs.props.d.ts +8 -0
  112. package/dist/components/input/docs.props.js +90 -0
  113. package/dist/components/input/index.scss +3 -0
  114. package/dist/components/input/props.d.ts +27 -0
  115. package/dist/components/input/props.js +13 -0
  116. package/dist/components/layout/QLayout.svelte +88 -0
  117. package/dist/components/layout/QLayout.svelte.d.ts +57 -0
  118. package/dist/components/layout/docs.d.ts +2 -0
  119. package/dist/components/layout/docs.js +11 -0
  120. package/dist/components/layout/docs.props.d.ts +8 -0
  121. package/dist/components/layout/docs.props.js +58 -0
  122. package/dist/components/layout/index.scss +370 -0
  123. package/dist/components/layout/props.d.ts +41 -0
  124. package/dist/components/layout/props.js +1 -0
  125. package/dist/components/list/QItem.svelte +60 -0
  126. package/dist/components/list/QItem.svelte.d.ts +34 -0
  127. package/dist/components/list/QItemSection.svelte +47 -0
  128. package/dist/components/list/QItemSection.svelte.d.ts +25 -0
  129. package/dist/components/list/QList.svelte +23 -0
  130. package/dist/components/list/QList.svelte.d.ts +36 -0
  131. package/dist/components/list/docs.props.d.ts +40 -0
  132. package/dist/components/list/docs.props.js +226 -0
  133. package/dist/components/list/index.scss +114 -0
  134. package/dist/components/list/props.d.ts +33 -0
  135. package/dist/components/list/props.js +25 -0
  136. package/dist/components/private/ContextReseter.svelte +13 -0
  137. package/dist/components/private/ContextReseter.svelte.d.ts +18 -0
  138. package/dist/components/private/QApi.svelte +142 -0
  139. package/dist/components/private/QApi.svelte.d.ts +17 -0
  140. package/dist/components/private/QDocs.svelte +66 -0
  141. package/dist/components/private/QDocs.svelte.d.ts +21 -0
  142. package/dist/components/private/QDocsSection.svelte +32 -0
  143. package/dist/components/private/QDocsSection.svelte.d.ts +29 -0
  144. package/dist/components/progress/QCircularProgress.svelte +26 -0
  145. package/dist/components/progress/QCircularProgress.svelte.d.ts +22 -0
  146. package/dist/components/progress/QLinearProgress.svelte +20 -0
  147. package/dist/components/progress/QLinearProgress.svelte.d.ts +22 -0
  148. package/dist/components/progress/docs.props.d.ts +8 -0
  149. package/dist/components/progress/docs.props.js +26 -0
  150. package/dist/components/progress/index.scss +50 -0
  151. package/dist/components/progress/props.d.ts +20 -0
  152. package/dist/components/progress/props.js +7 -0
  153. package/dist/components/radio/QRadio.svelte +14 -0
  154. package/dist/components/radio/QRadio.svelte.d.ts +22 -0
  155. package/dist/components/radio/docs.d.ts +2 -0
  156. package/dist/components/radio/docs.js +39 -0
  157. package/dist/components/radio/docs.props.d.ts +8 -0
  158. package/dist/components/radio/docs.props.js +34 -0
  159. package/dist/components/radio/index.scss +3 -0
  160. package/dist/components/radio/props.d.ts +8 -0
  161. package/dist/components/radio/props.js +8 -0
  162. package/dist/components/railbar/QRailbar.svelte +52 -0
  163. package/dist/components/railbar/QRailbar.svelte.d.ts +23 -0
  164. package/dist/components/railbar/docs.props.d.ts +8 -0
  165. package/dist/components/railbar/docs.props.js +26 -0
  166. package/dist/components/railbar/props.d.ts +7 -0
  167. package/dist/components/railbar/props.js +7 -0
  168. package/dist/components/select/QSelect.svelte +159 -0
  169. package/dist/components/select/QSelect.svelte.d.ts +34 -0
  170. package/dist/components/select/docs.d.ts +2 -0
  171. package/dist/components/select/docs.js +95 -0
  172. package/dist/components/select/docs.props.d.ts +8 -0
  173. package/dist/components/select/docs.props.js +106 -0
  174. package/dist/components/select/index.scss +34 -0
  175. package/dist/components/select/props.d.ts +33 -0
  176. package/dist/components/select/props.js +14 -0
  177. package/dist/components/separator/QSeparator.svelte +63 -0
  178. package/dist/components/separator/QSeparator.svelte.d.ts +25 -0
  179. package/dist/components/separator/docs.props.d.ts +16 -0
  180. package/dist/components/separator/docs.props.js +116 -0
  181. package/dist/components/separator/props.d.ts +22 -0
  182. package/dist/components/separator/props.js +9 -0
  183. package/dist/components/table/QTable.svelte +154 -0
  184. package/dist/components/table/QTable.svelte.d.ts +29 -0
  185. package/dist/components/table/docs.d.ts +2 -0
  186. package/dist/components/table/docs.js +11 -0
  187. package/dist/components/table/docs.props.d.ts +8 -0
  188. package/dist/components/table/docs.props.js +42 -0
  189. package/dist/components/table/index.scss +77 -0
  190. package/dist/components/table/props.d.ts +45 -0
  191. package/dist/components/table/props.js +1 -0
  192. package/dist/components/tabs/QTab.svelte +78 -0
  193. package/dist/components/tabs/QTab.svelte.d.ts +28 -0
  194. package/dist/components/tabs/QTabs.svelte +55 -0
  195. package/dist/components/tabs/QTabs.svelte.d.ts +23 -0
  196. package/dist/components/tabs/docs.props.d.ts +16 -0
  197. package/dist/components/tabs/docs.props.js +60 -0
  198. package/dist/components/tabs/index.scss +75 -0
  199. package/dist/components/tabs/props.d.ts +14 -0
  200. package/dist/components/tabs/props.js +13 -0
  201. package/dist/components/toggle/QToggle.svelte +35 -0
  202. package/dist/components/toggle/QToggle.svelte.d.ts +23 -0
  203. package/dist/components/toggle/docs.d.ts +2 -0
  204. package/dist/components/toggle/docs.js +47 -0
  205. package/dist/components/toggle/docs.props.d.ts +8 -0
  206. package/dist/components/toggle/docs.props.js +42 -0
  207. package/dist/components/toggle/index.scss +31 -0
  208. package/dist/components/toggle/props.d.ts +9 -0
  209. package/dist/components/toggle/props.js +9 -0
  210. package/dist/components/toolbar/QToolbar.svelte +39 -0
  211. package/dist/components/toolbar/QToolbar.svelte.d.ts +23 -0
  212. package/dist/components/toolbar/docs.props.d.ts +8 -0
  213. package/dist/components/toolbar/docs.props.js +18 -0
  214. package/dist/components/toolbar/index.scss +7 -0
  215. package/dist/components/toolbar/props.d.ts +6 -0
  216. package/dist/components/toolbar/props.js +6 -0
  217. package/dist/components/tooltip/QTooltip.svelte +15 -0
  218. package/dist/components/tooltip/QTooltip.svelte.d.ts +22 -0
  219. package/dist/components/tooltip/docs.props.d.ts +8 -0
  220. package/dist/components/tooltip/docs.props.js +18 -0
  221. package/dist/components/tooltip/index.scss +7 -0
  222. package/dist/components/tooltip/props.d.ts +6 -0
  223. package/dist/components/tooltip/props.js +6 -0
  224. package/dist/composables/index.d.ts +0 -0
  225. package/dist/composables/index.js +1 -0
  226. package/dist/composables/use-align.d.ts +8 -0
  227. package/dist/composables/use-align.js +12 -0
  228. package/dist/composables/use-index.d.ts +2 -0
  229. package/dist/composables/use-index.js +17 -0
  230. package/dist/composables/use-router-link.d.ts +18 -0
  231. package/dist/composables/use-router-link.js +27 -0
  232. package/dist/composables/use-size.d.ts +11 -0
  233. package/dist/composables/use-size.js +13 -0
  234. package/dist/css/grid.scss +65 -0
  235. package/dist/css/index.scss +119 -0
  236. package/dist/css/mixins/field.scss +430 -0
  237. package/dist/css/mixins/menu.scss +70 -0
  238. package/dist/css/mixins/selection.scss +184 -0
  239. package/dist/css/mixins/table.scss +36 -0
  240. package/dist/css/mixins.scss +135 -0
  241. package/dist/css/states.scss +70 -0
  242. package/dist/css/theme/colors.module.scss +180 -0
  243. package/dist/css/theme/theme.dark.scss +36 -0
  244. package/dist/css/theme/theme.light.scss +36 -0
  245. package/dist/css/theme/theme.scss +5 -0
  246. package/dist/css/theme/tokens.scss +266 -0
  247. package/dist/css/theme/typography.module.scss +150 -0
  248. package/dist/global.d.ts +10 -0
  249. package/dist/helpers/activationHandler.d.ts +9 -0
  250. package/dist/helpers/activationHandler.js +23 -0
  251. package/dist/helpers/clickOutside.d.ts +6 -0
  252. package/dist/helpers/clickOutside.js +34 -0
  253. package/dist/helpers/index.d.ts +2 -0
  254. package/dist/helpers/index.js +2 -0
  255. package/dist/index.d.ts +1 -0
  256. package/dist/index.js +2 -0
  257. package/dist/stores/QTheme.d.ts +41 -0
  258. package/dist/stores/QTheme.js +53 -0
  259. package/dist/stores/Quaff.d.ts +31 -0
  260. package/dist/stores/Quaff.js +52 -0
  261. package/dist/utils/clipboard.d.ts +1 -0
  262. package/dist/utils/clipboard.js +11 -0
  263. package/dist/utils/colors.d.ts +10 -0
  264. package/dist/utils/colors.js +102 -0
  265. package/dist/utils/fields.d.ts +1 -0
  266. package/dist/utils/fields.js +14 -0
  267. package/dist/utils/index.d.ts +0 -0
  268. package/dist/utils/index.js +1 -0
  269. package/dist/utils/props.d.ts +9 -0
  270. package/dist/utils/props.js +31 -0
  271. package/dist/utils/string.d.ts +10 -0
  272. package/dist/utils/string.js +78 -0
  273. package/dist/utils/types.d.ts +42 -0
  274. package/dist/utils/types.js +7 -0
  275. package/dist/utils/types.json +1 -0
  276. package/dist/utils/watchable.d.ts +2 -0
  277. package/dist/utils/watchable.js +22 -0
  278. package/package.json +66 -0
@@ -0,0 +1,17 @@
1
+ import { getContext, hasContext, setContext } from "svelte";
2
+ export function setIndex(index) {
3
+ setContext("index", {
4
+ index: () => {
5
+ index++;
6
+ return index;
7
+ },
8
+ });
9
+ return index;
10
+ }
11
+ export function getIndex() {
12
+ if (!hasContext("index")) {
13
+ return undefined;
14
+ }
15
+ const { index } = getContext("index");
16
+ return index();
17
+ }
@@ -0,0 +1,18 @@
1
+ import type { Page } from "@sveltejs/kit";
2
+ export interface UseRouterLinkProps {
3
+ href?: string;
4
+ to?: string;
5
+ disable: boolean;
6
+ activeClass?: string;
7
+ replace: boolean;
8
+ }
9
+ export declare const UseRouterLinkPropsDefaults: UseRouterLinkProps;
10
+ export declare function isRouteActive(router: Page<Record<string, string>, string | null>, to: string | undefined): boolean;
11
+ export default function <T extends UseRouterLinkProps>(props: T): {
12
+ hasLink: boolean;
13
+ linkAttributes: {
14
+ href: string | undefined;
15
+ "data-sveltkit-reload": string | undefined;
16
+ };
17
+ linkClasses: string;
18
+ };
@@ -0,0 +1,27 @@
1
+ import { createClasses } from "../utils/props";
2
+ import "$lib/stores/Quaff";
3
+ export const UseRouterLinkPropsDefaults = {
4
+ href: undefined,
5
+ to: undefined,
6
+ disable: false,
7
+ activeClass: undefined,
8
+ replace: false,
9
+ };
10
+ export function isRouteActive(router, to) {
11
+ return to === "/"
12
+ ? router.url.pathname === to
13
+ : router.url.pathname.slice(0, (to || "").length) === to;
14
+ }
15
+ export default function (props) {
16
+ const hasLink = props.to !== undefined || props.href !== undefined;
17
+ const linkClasses = createClasses([hasLink && "q-link", props.disable && "disable"]);
18
+ const linkAttributes = {
19
+ href: props.to || props.href,
20
+ "data-sveltkit-reload": props.replace === true ? "" : undefined,
21
+ };
22
+ return {
23
+ hasLink,
24
+ linkAttributes,
25
+ linkClasses,
26
+ };
27
+ }
@@ -0,0 +1,11 @@
1
+ export declare const useSizeClasses: {
2
+ xs: string;
3
+ sm: string;
4
+ md: string;
5
+ lg: string;
6
+ xl: string;
7
+ };
8
+ export interface useSizeProps {
9
+ size?: string;
10
+ }
11
+ export default function (sizeProp: any): string | null;
@@ -0,0 +1,13 @@
1
+ export const useSizeClasses = {
2
+ xs: "tiny",
3
+ sm: "small",
4
+ md: "",
5
+ lg: "large",
6
+ xl: "extra",
7
+ };
8
+ export default function (sizeProp) {
9
+ // return sizeStyle
10
+ return sizeProp in useSizeClasses
11
+ ? useSizeClasses[sizeProp]
12
+ : null;
13
+ }
@@ -0,0 +1,65 @@
1
+ // Grid variables
2
+ $grid-columns: 12;
3
+ $gutter-xs: 4px;
4
+ $gutter-sm: 8px;
5
+ $gutter-md: 16px;
6
+ $gutter-lg: 24px;
7
+ $gutter-xl: 48px;
8
+
9
+ // Responsive breakpoints
10
+ $breakpoints: (
11
+ xs: 0px,
12
+ sm: 600px,
13
+ md: 960px,
14
+ lg: 1280px,
15
+ xl: 1920px,
16
+ );
17
+
18
+ .row {
19
+ display: grid;
20
+ grid-template-columns: repeat($grid-columns, 1fr);
21
+ grid-gap: 0;
22
+
23
+ // Gutter classes
24
+ &.q-gutter-xs {
25
+ grid-gap: $gutter-xs;
26
+ }
27
+
28
+ &.q-gutter-sm {
29
+ grid-gap: $gutter-sm;
30
+ }
31
+
32
+ &.q-gutter-md {
33
+ grid-gap: $gutter-md;
34
+ }
35
+
36
+ &.q-gutter-lg {
37
+ grid-gap: $gutter-lg;
38
+ }
39
+
40
+ &.q-gutter-xl {
41
+ grid-gap: $gutter-xl;
42
+ }
43
+
44
+ &.q-gutter-none {
45
+ grid-gap: 0px;
46
+ }
47
+
48
+ // Column classes for all sizes
49
+ @for $i from 1 through $grid-columns {
50
+ & > .col-#{$i} {
51
+ grid-column: span #{$i};
52
+ }
53
+ }
54
+
55
+ // Column classes for each breakpoint
56
+ @each $breakpoint, $min-width in $breakpoints {
57
+ @media (min-width: #{$min-width}) {
58
+ @for $i from 1 through $grid-columns {
59
+ & > .col-#{$breakpoint}-#{$i} {
60
+ grid-column: span #{$i};
61
+ }
62
+ }
63
+ }
64
+ }
65
+ }
@@ -0,0 +1,119 @@
1
+ @use "sass:map";
2
+
3
+ $space-base: 16px !default;
4
+ $space-x-base: $space-base !default;
5
+ $space-y-base: $space-base !default;
6
+
7
+ $space-none: 0 !default;
8
+ $space-xs: 0.25rem !default;
9
+ $space-sm: 0.5rem !default;
10
+ $space-md: 1rem !default;
11
+ $space-lg: 1.5rem !default;
12
+ $space-xl: 2rem !default;
13
+
14
+ $spaces: (
15
+ "auto": auto,
16
+ "none": $space-none,
17
+ "xs": $space-xs,
18
+ "sm": $space-sm,
19
+ "md": $space-md,
20
+ "lg": $space-lg,
21
+ "xl": $space-xl,
22
+ ) !default;
23
+
24
+ $positions: (
25
+ "t": -top,
26
+ "r": -right,
27
+ "b": -bottom,
28
+ "l": -left,
29
+ "x": -inline,
30
+ "y": -block,
31
+ "a": "",
32
+ );
33
+
34
+ @import "./theme/theme";
35
+ @import "./mixins";
36
+ @import "./grid";
37
+ @import "./states";
38
+
39
+ @import "$components/avatar";
40
+ @import "$components/breadcrumbs";
41
+ @import "$components/button";
42
+ @import "$components/card";
43
+ @import "$components/checkbox";
44
+ @import "$components/chip";
45
+ @import "$components/dialog";
46
+ @import "$components/drawer";
47
+ @import "$components/footer";
48
+ @import "$components/icon";
49
+ @import "$components/input";
50
+ @import "$components/layout";
51
+ @import "$components/list";
52
+ @import "$components/progress";
53
+ @import "$components/radio";
54
+ @import "$components/select";
55
+ @import "$components/table";
56
+ @import "$components/tabs";
57
+ @import "$components/toggle";
58
+ @import "$components/toolbar";
59
+ @import "$components/tooltip";
60
+
61
+ html,
62
+ body {
63
+ height: 100%;
64
+ width: 100%;
65
+ }
66
+
67
+ @each $spaceName, $spaceVal in $spaces {
68
+ @each $posName, $_ in $positions {
69
+ .q-p#{$posName}-#{$spaceName} {
70
+ @include padding($posName, $spaceName);
71
+ }
72
+
73
+ .q-m#{$posName}-#{$spaceName} {
74
+ @include margin($posName, $spaceName);
75
+ }
76
+ }
77
+
78
+ @if $spaceName != "auto" {
79
+ .q-gap-#{$spaceName} {
80
+ gap: $spaceVal;
81
+ }
82
+ }
83
+ }
84
+
85
+ .flex {
86
+ display: flex;
87
+ }
88
+ .between-align {
89
+ justify-content: space-between;
90
+ }
91
+ .around-align {
92
+ justify-content: space-around;
93
+ }
94
+ .evenly-align {
95
+ justify-content: space-evenly;
96
+ }
97
+ .stretch-align {
98
+ justify-content: stretch;
99
+ }
100
+ .reverse {
101
+ flex-direction: row-reverse;
102
+ }
103
+ .column {
104
+ flex-direction: column;
105
+ }
106
+
107
+ .no-overflow {
108
+ overflow: hidden;
109
+ }
110
+ .scroll {
111
+ overflow: scroll;
112
+ }
113
+
114
+ .no-select {
115
+ -webkit-user-select: none;
116
+ -moz-user-select: none;
117
+ -ms-user-select: none;
118
+ user-select: none;
119
+ }
@@ -0,0 +1,430 @@
1
+ @mixin field {
2
+ $root: &;
3
+ $label: #{$root}__label;
4
+ $labelActive: #{$root}__label--active;
5
+
6
+ height: 3rem;
7
+ margin-bottom: 2rem;
8
+ border-radius: 0.25rem;
9
+
10
+ &--sm,
11
+ &--dense {
12
+ height: 2.5rem;
13
+ }
14
+
15
+ &--lg {
16
+ height: 3.5rem;
17
+ }
18
+
19
+ &--xl {
20
+ height: 4rem;
21
+ }
22
+
23
+ &:not(&--has-border) {
24
+ border-radius: 0.25rem 0.25rem 0 0;
25
+ }
26
+
27
+ &--rounded#{$root}--sm,
28
+ &--rounded#{$root}--dense {
29
+ border-radius: 1.25rem;
30
+ }
31
+
32
+ &--rounded {
33
+ border-radius: 1.5rem;
34
+ }
35
+
36
+ &--rounded#{$root}--lg {
37
+ border-radius: 1.75rem;
38
+ }
39
+
40
+ &--rounded#{$root}--xl {
41
+ border-radius: 2rem;
42
+ }
43
+
44
+ &::before {
45
+ content: "";
46
+ position: absolute;
47
+ top: 0;
48
+ left: 0;
49
+ right: 0;
50
+ bottom: 0;
51
+ border-radius: inherit;
52
+ background-color: inherit;
53
+ }
54
+
55
+ &--filled::before {
56
+ background-color: var(--surface-variant);
57
+ color: var(--on-surface-variant);
58
+ }
59
+
60
+ & > :is(i, img, svg, .loader) {
61
+ position: absolute;
62
+ top: 50%;
63
+ left: auto;
64
+ right: 1rem;
65
+ transform: translateY(-50%);
66
+ cursor: pointer;
67
+ z-index: 0;
68
+ }
69
+
70
+ &--bordered,
71
+ &--filled,
72
+ &--rounded {
73
+ > :is(i, img, svg, .loader) {
74
+ left: auto;
75
+ right: 1rem;
76
+ }
77
+ }
78
+
79
+ > :is(i, img, svg, .loader):first-child {
80
+ left: 1rem;
81
+ right: auto;
82
+ }
83
+
84
+ &--bordered,
85
+ &--rounded,
86
+ &--outlined,
87
+ &--filled {
88
+ > :is(i, img, svg, .loader):first-child {
89
+ left: 1rem;
90
+ right: auto;
91
+ }
92
+ }
93
+
94
+ &--error > i {
95
+ color: var(--error);
96
+ }
97
+
98
+ > .loader {
99
+ border-width: 0.1875rem;
100
+ width: 1.5rem;
101
+ height: 1.5rem;
102
+ }
103
+
104
+ /* input, textarea and select */
105
+ > select,
106
+ input[type^="date"],
107
+ input[type^="time"],
108
+ input[type="search"] {
109
+ appearance: none;
110
+ cursor: pointer;
111
+ }
112
+
113
+ input[type^="date"]::-webkit-inner-spin-button,
114
+ input[type^="date"]::-webkit-calendar-picker-indicator,
115
+ input[type^="time"]::-webkit-inner-spin-button,
116
+ input[type^="time"]::-webkit-calendar-picker-indicator {
117
+ opacity: 0;
118
+ position: absolute;
119
+ top: 0;
120
+ bottom: 0;
121
+ left: 0;
122
+ right: 0;
123
+ width: 100%;
124
+ height: 100%;
125
+ z-index: -1;
126
+ cursor: pointer;
127
+ }
128
+
129
+ input::-webkit-outer-spin-button,
130
+ input::-webkit-inner-spin-button,
131
+ input[type="number"] {
132
+ appearance: none;
133
+ -moz-appearance: textfield;
134
+ }
135
+
136
+ input[type="file"] {
137
+ position: absolute;
138
+ top: 0;
139
+ left: 0;
140
+ width: 100%;
141
+ height: 100%;
142
+ z-index: 2;
143
+ opacity: 0;
144
+ cursor: pointer;
145
+ }
146
+
147
+ input[type="search"]::-webkit-search-decoration,
148
+ input[type="search"]::-webkit-search-cancel-button,
149
+ input[type="search"]::-webkit-search-results-button,
150
+ input[type="search"]::-webkit-search-results-decoration {
151
+ display: none;
152
+ }
153
+
154
+ > :is(input, textarea, select) {
155
+ border: 0.0625rem solid transparent;
156
+ padding: 0 0.9375rem;
157
+ font-family: inherit;
158
+ font-size: 1rem;
159
+ width: 100%;
160
+ height: 100%;
161
+ outline: none;
162
+ z-index: 1;
163
+ background: none;
164
+ resize: none;
165
+ }
166
+
167
+ > :is(input, textarea, select):focus {
168
+ border: 0.125rem solid transparent;
169
+ padding: 0 0.875rem;
170
+ }
171
+
172
+ &--has-border {
173
+ > :is(input, textarea, select) {
174
+ border-color: var(--outline);
175
+ }
176
+
177
+ > :is(input, textarea, select):focus {
178
+ border-color: var(--primary);
179
+ }
180
+ }
181
+
182
+ &--rounded {
183
+ > :is(input, textarea, select) {
184
+ padding-left: 1.4376rem;
185
+ padding-right: 1.4376rem;
186
+ }
187
+
188
+ > :is(input, textarea, select):focus {
189
+ padding-left: 1.375rem;
190
+ padding-right: 1.375rem;
191
+ }
192
+ }
193
+
194
+ &--prepend {
195
+ > :is(input, textarea, select) {
196
+ padding-left: 2.9375rem;
197
+ }
198
+ > .slider {
199
+ margin-left: 3.5rem;
200
+ }
201
+ > :is(input, textarea, select):focus {
202
+ padding-left: 2.875rem;
203
+ }
204
+ }
205
+
206
+ &--append {
207
+ > :is(input, textarea, select) {
208
+ padding-right: 2.9375rem;
209
+ }
210
+ > .slider {
211
+ margin-right: 3.5rem;
212
+ }
213
+
214
+ > :is(input, textarea, select):focus {
215
+ padding-right: 2.875rem;
216
+ }
217
+ }
218
+
219
+ &:not(&--has-border, &--rounded) > :is(input, textarea, select) {
220
+ border-bottom-color: var(--outline);
221
+
222
+ &:focus {
223
+ border-bottom-color: var(--primary);
224
+ }
225
+ }
226
+
227
+ &--rounded {
228
+ &:not(#{$root}--has-border, #{$root}--fill) > :is(input, textarea, select),
229
+ &:not(#{$root}--has-border) > :is(input, textarea, select):focus {
230
+ box-shadow: var(--elevate1);
231
+ }
232
+
233
+ &:not(#{$root}--has-border, #{$root}--fill) > :is(input, textarea, select):focus {
234
+ box-shadow: var(--elevate2);
235
+ }
236
+ }
237
+
238
+ &-error:not(&--has-border, &--rounded) > :is(input, textarea, select),
239
+ &-error:not(&--has-border, &--rounded) > :is(input, textarea, select):focus {
240
+ border-bottom-color: var(--error);
241
+ }
242
+
243
+ &-error#{$root}--has-border > :is(input, textarea, select),
244
+ &-error#{$root}--has-border > :is(input, textarea, select):focus {
245
+ border-color: var(--error);
246
+ }
247
+
248
+ & > :disabled {
249
+ opacity: 0.5;
250
+ cursor: not-allowed;
251
+ }
252
+
253
+ &--sm.textarea,
254
+ &--dense.textarea {
255
+ height: 4.5rem;
256
+ }
257
+
258
+ &.textarea {
259
+ height: 5.5rem;
260
+ }
261
+
262
+ &--lg.textarea {
263
+ height: 6.5rem;
264
+ }
265
+
266
+ &--xl.textarea {
267
+ height: 7.5rem;
268
+ }
269
+
270
+ & > select > option {
271
+ background-color: var(--surface);
272
+ color: var(--on-surface);
273
+ }
274
+
275
+ &--label {
276
+ & > input,
277
+ & > select {
278
+ &,
279
+ &:focus {
280
+ padding-top: 1rem;
281
+ }
282
+ }
283
+
284
+ > textarea {
285
+ padding-top: 1.375rem;
286
+ }
287
+
288
+ > #{$label} {
289
+ position: absolute;
290
+ top: 50%;
291
+ left: 1rem;
292
+ font-size: 1rem;
293
+ transform: translateY(-50%);
294
+ transition: var(--speed2) all, 0s background-color;
295
+ z-index: 0;
296
+ }
297
+ }
298
+
299
+ &--label#{$root}--sm > textarea {
300
+ padding-top: 1.125rem;
301
+ }
302
+
303
+ &--label#{$root}--lg > textarea {
304
+ padding-top: 1.625rem;
305
+ }
306
+
307
+ &--label#{$root}--xl > textarea {
308
+ padding-top: 1.875rem;
309
+ }
310
+
311
+ &--label#{$root}--has-border:not(&--filled) > :is(input, select) {
312
+ padding-top: 0;
313
+ }
314
+
315
+ &--sm:not(&--label) > textarea,
316
+ &--sm#{$root}--has-border:not(&--filled) > textarea {
317
+ padding-top: 0.625rem;
318
+ }
319
+
320
+ &:not(&--label) > textarea,
321
+ &--has-border:not(&--filled) > textarea {
322
+ padding-top: 0.875rem;
323
+ }
324
+
325
+ &--lg:not(&--label) > textarea,
326
+ &--lg#{$root}--has-border:not(&--filled) > textarea {
327
+ padding-top: 1.125rem;
328
+ }
329
+
330
+ &--xl:not(&--label) > textarea,
331
+ &--xl#{$root}--has-border:not(&--filled) > textarea {
332
+ padding-top: 1.375rem;
333
+ }
334
+
335
+ &--label#{$root}--sm.textarea > #{$label} {
336
+ top: 1.25rem;
337
+ }
338
+
339
+ &--label.textarea > #{$label} {
340
+ top: 1.5rem;
341
+ }
342
+
343
+ &--label#{$root}--lg.textarea > #{$label} {
344
+ top: 1.75rem;
345
+ }
346
+
347
+ &--label#{$root}--xl.textarea > #{$label} {
348
+ top: 2rem;
349
+ }
350
+
351
+ &--label#{$root}--rounded > #{$label} {
352
+ left: 1.5rem;
353
+ }
354
+
355
+ &--label#{$root}--prepend > #{$label} {
356
+ left: 3rem;
357
+ }
358
+
359
+ &--label > #{$label}#{$labelActive},
360
+ &--label > [placeholder]:focus ~ #{$label},
361
+ &--label > [placeholder]:not(:placeholder-shown) ~ #{$label} {
362
+ font-size: 0.75rem;
363
+ transform: translateY(-120%);
364
+ z-index: 1;
365
+ }
366
+
367
+ &--label#{$root}--has-border:not(&--filled) > #{$label}#{$labelActive},
368
+ &--label#{$root}--has-border:not(&--filled) > [placeholder]:focus ~ #{$label},
369
+ &--label#{$root}--has-border:not(&--filled) > [placeholder]:not(:placeholder-shown) ~ #{$label} {
370
+ font-size: 0.75rem;
371
+ top: 0%;
372
+ left: 1rem;
373
+ transform: translateY(-50%);
374
+ z-index: 1;
375
+ }
376
+
377
+ &--label#{$root}--has-border#{$root}--rounded:not(&--filled) > #{$label}#{$labelActive},
378
+ &--label#{$root}--has-border#{$root}--rounded:not(&--filled) > [placeholder]:focus ~ #{$label},
379
+ &--label#{$root}--has-border#{$root}--rounded:not(&--filled)
380
+ > [placeholder]:not(:placeholder-shown)
381
+ ~ #{$label} {
382
+ left: 1.5rem;
383
+ z-index: 1;
384
+ }
385
+
386
+ &--label > :focus ~ #{$label} {
387
+ color: var(--primary);
388
+ }
389
+
390
+ &--error > #{$label} {
391
+ color: var(--error) !important;
392
+ }
393
+
394
+ & > #{$label}.required::after,
395
+ &.required > #{$label}::after {
396
+ content: " * ";
397
+ }
398
+
399
+ &__helper,
400
+ &__error {
401
+ position: absolute;
402
+ left: 1rem;
403
+ bottom: 0;
404
+ transform: translateY(100%);
405
+ font-size: 0.75rem;
406
+ background: none !important;
407
+ padding-top: 0.125rem;
408
+ }
409
+
410
+ &__helper {
411
+ &a {
412
+ color: var(--primary);
413
+ }
414
+ }
415
+
416
+ &__error {
417
+ color: var(--error) !important;
418
+ }
419
+
420
+ &--rounded {
421
+ #{$root}__helper,
422
+ #{$root}__error {
423
+ left: 1.5rem;
424
+ }
425
+ }
426
+
427
+ &--error > &__helper {
428
+ display: none;
429
+ }
430
+ }