@studiocms/ui 0.3.2 → 0.4.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 (156) hide show
  1. package/dist/components/Accordion/Accordion.astro +23 -0
  2. package/dist/components/Accordion/Item.astro +21 -0
  3. package/dist/components/Accordion/accordion.css +64 -0
  4. package/dist/components/Accordion/accordion.d.ts +1 -0
  5. package/dist/components/Accordion/accordion.js +70 -0
  6. package/dist/components/Badge/Badge.astro +49 -0
  7. package/dist/components/Badge/badge.css +111 -0
  8. package/dist/components/Breadcrumbs/Breadcrumbs.astro +31 -0
  9. package/dist/components/Breadcrumbs/breadcrumbs.css +15 -0
  10. package/dist/components/Button/Button.astro +75 -0
  11. package/dist/components/Button/button.css +292 -0
  12. package/{src/components → dist/components/Card}/Card.astro +1 -48
  13. package/dist/components/Card/card.css +38 -0
  14. package/dist/components/Center/Center.astro +7 -0
  15. package/dist/components/Center/center.css +8 -0
  16. package/dist/components/Checkbox/Checkbox.astro +95 -0
  17. package/dist/components/Checkbox/checkbox.css +119 -0
  18. package/dist/components/Checkbox/checkbox.d.ts +2 -0
  19. package/dist/components/Checkbox/checkbox.js +20 -0
  20. package/{src/components → dist/components/Divider}/Divider.astro +2 -25
  21. package/dist/components/Divider/divider.css +21 -0
  22. package/dist/components/Dropdown/Dropdown.astro +116 -0
  23. package/dist/components/Dropdown/dropdown.css +180 -0
  24. package/dist/components/Dropdown/dropdown.d.ts +48 -0
  25. package/dist/components/Dropdown/dropdown.js +201 -0
  26. package/dist/components/Footer/Footer.astro +58 -0
  27. package/dist/components/Footer/footer.css +68 -0
  28. package/dist/components/Group/Group.astro +7 -0
  29. package/dist/components/Group/group.css +19 -0
  30. package/{src/utils → dist/components/Icon}/Icon.astro +1 -1
  31. package/{src/utils/iconType.ts → dist/components/Icon/iconType.d.ts} +0 -1
  32. package/dist/components/Icon/iconType.js +0 -0
  33. package/{src/components → dist/components/Input}/Input.astro +2 -48
  34. package/dist/components/Input/input.css +38 -0
  35. package/{src → dist}/components/Modal/Modal.astro +4 -122
  36. package/dist/components/Modal/modal.css +100 -0
  37. package/dist/components/Modal/modal.d.ts +48 -0
  38. package/dist/components/Modal/modal.js +129 -0
  39. package/dist/components/Progress/Progress.astro +21 -0
  40. package/dist/components/Progress/helper.d.ts +13 -0
  41. package/dist/components/Progress/helper.js +32 -0
  42. package/dist/components/Progress/progress.css +29 -0
  43. package/dist/components/Progress/progress.d.ts +1 -0
  44. package/dist/components/Progress/progress.js +10 -0
  45. package/dist/components/RadioGroup/RadioGroup.astro +124 -0
  46. package/dist/components/RadioGroup/radiogroup.css +96 -0
  47. package/dist/components/RadioGroup/radiogroup.d.ts +1 -0
  48. package/dist/components/RadioGroup/radiogroup.js +48 -0
  49. package/{src/components → dist/components/Row}/Row.astro +1 -24
  50. package/dist/components/Row/row.css +18 -0
  51. package/dist/components/SearchSelect/SearchSelect.astro +135 -0
  52. package/dist/components/SearchSelect/searchselect.css +95 -0
  53. package/dist/components/SearchSelect/searchselect.d.ts +6 -0
  54. package/dist/components/SearchSelect/searchselect.js +166 -0
  55. package/dist/components/Select/Select.astro +147 -0
  56. package/dist/components/Select/select.css +110 -0
  57. package/dist/components/Select/select.d.ts +1 -0
  58. package/dist/components/Select/select.js +143 -0
  59. package/dist/components/Sidebar/helpers.d.ts +76 -0
  60. package/dist/components/Sidebar/helpers.js +160 -0
  61. package/{src → dist}/components/Tabs/TabItem.astro +3 -3
  62. package/dist/components/Tabs/Tabs.astro +150 -0
  63. package/dist/components/Tabs/tabs.css +121 -0
  64. package/dist/components/Tabs/tabs.d.ts +1 -0
  65. package/dist/components/Tabs/tabs.js +82 -0
  66. package/{src/components → dist/components/Textarea}/Textarea.astro +2 -61
  67. package/dist/components/Textarea/textarea.css +49 -0
  68. package/dist/components/ThemeToggle/ThemeToggle.astro +21 -0
  69. package/dist/components/ThemeToggle/themetoggle.css +17 -0
  70. package/dist/components/ThemeToggle/themetoggle.d.ts +1 -0
  71. package/dist/components/ThemeToggle/themetoggle.js +4 -0
  72. package/dist/components/Toast/Toaster.astro +69 -0
  73. package/dist/components/Toast/toast.d.ts +8 -0
  74. package/dist/components/Toast/toast.js +9 -0
  75. package/dist/components/Toast/toaster.css +168 -0
  76. package/dist/components/Toast/toaster.d.ts +1 -0
  77. package/dist/components/Toast/toaster.js +160 -0
  78. package/dist/components/Toggle/Toggle.astro +84 -0
  79. package/dist/components/Toggle/toggle.css +93 -0
  80. package/dist/components/Toggle/toggle.d.ts +2 -0
  81. package/dist/components/Toggle/toggle.js +20 -0
  82. package/{src/components → dist/components/User}/User.astro +3 -43
  83. package/dist/components/User/user.css +35 -0
  84. package/dist/css/colors.css +95 -0
  85. package/dist/css/global.css +3 -0
  86. package/dist/css/radii.css +6 -0
  87. package/dist/css/resets.css +46 -0
  88. package/dist/index.d.ts +12 -0
  89. package/dist/index.js +379 -0
  90. package/dist/toolbar/ColorPicker.d.ts +7 -0
  91. package/dist/toolbar/ColorPicker.js +85 -0
  92. package/dist/toolbar/icon.d.ts +1 -0
  93. package/dist/toolbar/icon.js +4 -0
  94. package/dist/toolbar/index.d.ts +2 -0
  95. package/dist/toolbar/index.js +292 -0
  96. package/dist/types/index.d.ts +11 -0
  97. package/dist/types/index.js +0 -0
  98. package/dist/utils/ThemeHelper.d.ts +49 -0
  99. package/dist/utils/ThemeHelper.js +113 -0
  100. package/{src/utils/colors.ts → dist/utils/colors.d.ts} +1 -1
  101. package/dist/utils/colors.js +0 -0
  102. package/dist/utils/generateID.d.ts +2 -0
  103. package/dist/utils/generateID.js +6 -0
  104. package/dist/utils/headers.d.ts +43 -0
  105. package/dist/utils/headers.js +129 -0
  106. package/dist/utils/iconStrings.d.ts +4 -0
  107. package/dist/utils/iconStrings.js +13 -0
  108. package/dist/utils/integration-utils.d.ts +130 -0
  109. package/dist/utils/integration-utils.js +161 -0
  110. package/package.json +25 -9
  111. package/src/components/BaseHead.astro +0 -22
  112. package/src/components/Button.astro +0 -372
  113. package/src/components/Center.astro +0 -16
  114. package/src/components/Checkbox.astro +0 -250
  115. package/src/components/Dropdown/Dropdown.astro +0 -314
  116. package/src/components/Dropdown/dropdown.ts +0 -258
  117. package/src/components/Dropdown/index.ts +0 -2
  118. package/src/components/Footer.astro +0 -137
  119. package/src/components/Modal/index.ts +0 -2
  120. package/src/components/Modal/modal.ts +0 -163
  121. package/src/components/RadioGroup.astro +0 -299
  122. package/src/components/SearchSelect.astro +0 -486
  123. package/src/components/Select.astro +0 -467
  124. package/src/components/Sidebar/helpers.ts +0 -179
  125. package/src/components/Sidebar/index.ts +0 -3
  126. package/src/components/Tabs/Tabs.astro +0 -393
  127. package/src/components/Tabs/index.ts +0 -2
  128. package/src/components/ThemeToggle.astro +0 -46
  129. package/src/components/Toast/Toaster.astro +0 -470
  130. package/src/components/Toast/index.ts +0 -2
  131. package/src/components/Toast/toast.ts +0 -16
  132. package/src/components/Toggle.astro +0 -214
  133. package/src/components/index.ts +0 -27
  134. package/src/components.ts +0 -26
  135. package/src/css/colors.css +0 -106
  136. package/src/css/global.css +0 -2
  137. package/src/css/resets.css +0 -54
  138. package/src/env.d.ts +0 -15
  139. package/src/integration.ts +0 -31
  140. package/src/layouts/RootLayout.astro +0 -33
  141. package/src/layouts/index.ts +0 -2
  142. package/src/layouts.ts +0 -1
  143. package/src/types/index.ts +0 -11
  144. package/src/utils/ThemeHelper.ts +0 -145
  145. package/src/utils/create-resolver.ts +0 -30
  146. package/src/utils/generateID.ts +0 -5
  147. package/src/utils/headers.ts +0 -190
  148. package/src/utils/iconStrings.ts +0 -29
  149. package/src/utils/index.ts +0 -1
  150. package/src/utils/virtual-module-plugin-builder.ts +0 -37
  151. /package/{src → dist}/components/Sidebar/Double.astro +0 -0
  152. /package/{src → dist}/components/Sidebar/Single.astro +0 -0
  153. /package/{src → dist}/icons/Checkmark.astro +0 -0
  154. /package/{src → dist}/icons/ChevronUpDown.astro +0 -0
  155. /package/{src → dist}/icons/User.astro +0 -0
  156. /package/{src → dist}/icons/X-Mark.astro +0 -0
@@ -0,0 +1,35 @@
1
+ .sui-user-container {
2
+ display: flex;
3
+ flex-direction: row;
4
+ align-items: center;
5
+ gap: 1rem;
6
+ }
7
+ .sui-avatar-container {
8
+ width: 2.5rem;
9
+ height: 2.5rem;
10
+ background-color: hsl(var(--default-base));
11
+ border-radius: var(--radius-full);
12
+ display: flex;
13
+ align-items: center;
14
+ justify-content: center;
15
+ overflow: hidden;
16
+ border: 1px solid hsl(var(--border));
17
+ }
18
+ .sui-avatar-img {
19
+ width: 100%;
20
+ height: auto;
21
+ }
22
+ .sui-text-content {
23
+ display: flex;
24
+ flex-direction: column;
25
+ gap: .125rem;
26
+ }
27
+ .sui-name {
28
+ font-size: 1em;
29
+ font-weight: 600;
30
+ }
31
+ .sui-description {
32
+ font-size: .875em;
33
+ font-weight: 400;
34
+ color: hsl(var(--text-muted));
35
+ }
@@ -0,0 +1,95 @@
1
+ [data-theme=light],
2
+ [data-theme=light] * {
3
+ color-scheme: light;
4
+ }
5
+ [data-theme=dark],
6
+ [data-theme=dark] * {
7
+ color-scheme: dark;
8
+ }
9
+ :root {
10
+ --background-base: 0 0% 6%;
11
+ --background-step-1: 0 0% 8%;
12
+ --background-step-2: 0 0% 10%;
13
+ --background-step-3: 0 0% 14%;
14
+ --text-normal: 0 0% 100%;
15
+ --text-muted: 0 0% 54%;
16
+ --text-inverted: 0 0% 0%;
17
+ --border: 240 5% 17%;
18
+ --shadow: 0 0% 0%;
19
+ --default-base: 0 0% 14%;
20
+ --default-hover: 0 0% 21%;
21
+ --default-active: 0 0% 15%;
22
+ --primary-base: 259 83% 73%;
23
+ --primary-hover: 259 77% 78%;
24
+ --primary-active: 259 73% 67%;
25
+ --success-base: 142 71% 46%;
26
+ --success-hover: 142 72% 61%;
27
+ --success-active: 142 87% 52%;
28
+ --warning-base: 48 96% 53%;
29
+ --warning-hover: 48 97% 70%;
30
+ --warning-active: 48 100% 61%;
31
+ --danger-base: 339 97% 31%;
32
+ --danger-hover: 337 98% 37%;
33
+ --danger-active: 337 88% 32%;
34
+ --info-base: 217 92% 52%;
35
+ --info-hover: 214 95% 58%;
36
+ --info-active: 214 85% 52%;
37
+ --mono-base: 0 0% 100%;
38
+ --mono-hover: 0 0% 90%;
39
+ --mono-active: 0 0% 95%;
40
+ --text-light: 0 0% 100%;
41
+ --text-dark: 0 0% 0%;
42
+ --default-flat: var(--default-base) / 0.5;
43
+ --default-flat-hover: var(--default-base) / 0.75;
44
+ --default-flat-active: var(--default-base) / 0.85;
45
+ --primary-flat: var(--primary-base) / 0.1;
46
+ --primary-flat-hover: var(--primary-base) / 0.25;
47
+ --primary-flat-active: var(--primary-base) / 0.35;
48
+ --success-flat: var(--success-base) / 0.1;
49
+ --success-flat-hover: var(--success-base) / 0.25;
50
+ --success-flat-active: var(--success-base) / 0.35;
51
+ --warning-flat: var(--warning-base) / 0.1;
52
+ --warning-flat-hover: var(--warning-base) / 0.25;
53
+ --warning-flat-active: var(--warning-base) / 0.35;
54
+ --danger-flat: var(--danger-base) / 0.1;
55
+ --danger-flat-hover: var(--danger-base) / 0.25;
56
+ --danger-flat-active: var(--danger-base) / 0.35;
57
+ --info-flat: var(--info-base) / 0.1;
58
+ --info-flat-hover: var(--info-base) / 0.25;
59
+ --info-flat-active: var(--info-base) / 0.35;
60
+ --mono-flat: var(--mono-base) / 0.1;
61
+ --mono-flat-hover: var(--mono-base) / 0.25;
62
+ --mono-flat-active: var(--mono-base) / 0.35;
63
+ }
64
+ [data-theme=light] {
65
+ --background-base: 0 0% 97%;
66
+ --background-step-1: 0 0% 90%;
67
+ --background-step-2: 0 0% 85%;
68
+ --background-step-3: 0 0% 80%;
69
+ --text-normal: 0 0% 0%;
70
+ --text-muted: 0 0% 24%;
71
+ --text-inverted: 0 0% 100%;
72
+ --border: 263 5% 68%;
73
+ --shadow: 0 0% 65%;
74
+ --default-base: 0 0% 74%;
75
+ --default-hover: 0 0% 81%;
76
+ --default-active: 0 0% 91%;
77
+ --primary-base: 259 85% 61%;
78
+ --primary-hover: 259 78% 56%;
79
+ --primary-active: 259 71% 50%;
80
+ --success-base: 142 59% 47%;
81
+ --success-hover: 142 62% 56%;
82
+ --success-active: 142 87% 59%;
83
+ --warning-base: 48 92% 46%;
84
+ --warning-hover: 48 88% 43%;
85
+ --warning-active: 48 85% 40%;
86
+ --danger-base: 339 97% 31%;
87
+ --danger-hover: 337 98% 37%;
88
+ --danger-active: 337 88% 45%;
89
+ --info-base: 217 92% 52%;
90
+ --info-hover: 214 95% 58%;
91
+ --info-active: 214 85% 52%;
92
+ --mono-base: 0 0% 0%;
93
+ --mono-hover: 0 0% 10%;
94
+ --mono-active: 0 0% 5%;
95
+ }
@@ -0,0 +1,3 @@
1
+ @import "./colors.css";
2
+ @import "./resets.css";
3
+ @import "./radii.css";
@@ -0,0 +1,6 @@
1
+ :root {
2
+ --radius-sm: 0.25rem;
3
+ --radius-md: 0.5rem;
4
+ --radius-lg: 0.75rem;
5
+ --radius-full: 999px;
6
+ }
@@ -0,0 +1,46 @@
1
+ *,
2
+ *::before,
3
+ *::after {
4
+ box-sizing: border-box !important;
5
+ }
6
+ html {
7
+ color-scheme: dark;
8
+ accent-color: hsl(var(--primary-base));
9
+ }
10
+ html,
11
+ body {
12
+ margin: 0;
13
+ }
14
+ html[data-theme=light] {
15
+ color-scheme: light;
16
+ }
17
+ body {
18
+ -webkit-font-smoothing: antialiased;
19
+ color: hsl(var(--text-normal));
20
+ background-color: hsl(var(--background-base));
21
+ }
22
+ input,
23
+ button,
24
+ textarea,
25
+ select {
26
+ font: inherit;
27
+ }
28
+ p,
29
+ h1,
30
+ h2,
31
+ h3,
32
+ h4,
33
+ h5,
34
+ h6,
35
+ code {
36
+ overflow-wrap: anywhere;
37
+ }
38
+ code {
39
+ font-family: monospace;
40
+ }
41
+ button {
42
+ border: none;
43
+ outline: none;
44
+ background: none;
45
+ padding: 0;
46
+ }
@@ -0,0 +1,12 @@
1
+ import type { AstroIntegration } from 'astro';
2
+ type Options = {
3
+ /**
4
+ * Path to a custom CSS file to be included in the build.
5
+ * Can be used to overwrite the default styles by redefining the CSS variables.
6
+ *
7
+ * @link https://ui.studiocms.dev/docs/guides/customization/
8
+ */
9
+ customCss?: string;
10
+ };
11
+ export default function integration(options?: Options): AstroIntegration;
12
+ export {};
package/dist/index.js ADDED
@@ -0,0 +1,379 @@
1
+ import fs from "node:fs";
2
+ import transitionEventPolyfill from "astro-transition-event-polyfill";
3
+ import { studiocmsLogo } from "./toolbar/icon.js";
4
+ import { addVirtualImports, createResolver } from "./utils/integration-utils.js";
5
+ const pkgJson = JSON.parse(fs.readFileSync(new URL("../package.json", import.meta.url), "utf-8"));
6
+ function integration(options = {}) {
7
+ const { resolve } = createResolver(import.meta.url);
8
+ return {
9
+ name: "@studiocms/ui",
10
+ hooks: {
11
+ "astro:config:setup": (params) => {
12
+ const { addDevToolbarApp, injectScript, updateConfig } = params;
13
+ const { resolve: rootResolve } = createResolver(params.config.root.pathname);
14
+ updateConfig({
15
+ integrations: [transitionEventPolyfill()]
16
+ });
17
+ addVirtualImports(params, {
18
+ name: "@studiocms/ui",
19
+ imports: {
20
+ // Internal Version
21
+ "studiocms:ui/version": `export default '${pkgJson.version}';`,
22
+ // Styles
23
+ "studiocms:ui/global-css": `import '${resolve("./css/global.css")}';`,
24
+ "studiocms:ui/custom-css": `import '${rootResolve(options.customCss ? options.customCss : "")}';`,
25
+ // Scripts
26
+ "studiocms:ui/scripts/checkbox": `import '${resolve("./components/Checkbox/checkbox.js")}';`,
27
+ "studiocms:ui/scripts/radiogroup": `import '${resolve("./components/RadioGroup/radiogroup.js")}';`,
28
+ "studiocms:ui/scripts/searchselect": `import '${resolve("./components/SearchSelect/searchselect.js")}';`,
29
+ "studiocms:ui/scripts/select": `import '${resolve("./components/Select/select.js")}';`,
30
+ "studiocms:ui/scripts/tabs": `import '${resolve("./components/Tabs/tabs.js")}';`,
31
+ "studiocms:ui/scripts/themetoggle": `import '${resolve("./components/ThemeToggle/themetoggle.js")}';`,
32
+ "studiocms:ui/scripts/toaster": `import '${resolve("./components/Toast/toaster.js")}';`,
33
+ "studiocms:ui/scripts/toast": `import '${resolve("./components/Toast/toast.js")}';`,
34
+ "studiocms:ui/scripts/toggle": `import '${resolve("./components/Toggle/toggle.js")}';`,
35
+ "studiocms:ui/scripts/accordion": `import '${resolve("./components/Accordion/accordion.js")}';`,
36
+ "studiocms:ui/scripts/progress": `import '${resolve("./components/Progress/progress.js")}';`,
37
+ // Components
38
+ "studiocms:ui/components": `
39
+ export { default as Button } from '${resolve("./components/Button/Button.astro")}';
40
+ export { default as Divider } from '${resolve("./components/Divider/Divider.astro")}';
41
+ export { default as Input } from '${resolve("./components/Input/Input.astro")}';
42
+ export { default as Row } from '${resolve("./components/Row/Row.astro")}';
43
+ export { default as Center } from '${resolve("./components/Center/Center.astro")}';
44
+ export { default as Textarea } from '${resolve("./components/Textarea/Textarea.astro")}';
45
+ export { default as Checkbox } from '${resolve("./components/Checkbox/Checkbox.astro")}';
46
+ export { default as Toggle } from '${resolve("./components/Toggle/Toggle.astro")}';
47
+ export { default as RadioGroup } from '${resolve("./components/RadioGroup/RadioGroup.astro")}';
48
+ export { default as Toaster } from '${resolve("./components/Toast/Toaster.astro")}';
49
+ export { default as Card } from '${resolve("./components/Card/Card.astro")}';
50
+ export { default as Modal } from '${resolve("./components/Modal/Modal.astro")}';
51
+ export { default as Select } from '${resolve("./components/Select/Select.astro")}';
52
+ export { default as SearchSelect } from '${resolve("./components/SearchSelect/SearchSelect.astro")}';
53
+ export { default as Dropdown } from '${resolve("./components/Dropdown/Dropdown.astro")}';
54
+ export { default as User } from '${resolve("./components/User/User.astro")}';
55
+ export { default as ThemeToggle } from '${resolve("./components/ThemeToggle/ThemeToggle.astro")}';
56
+ export { default as Tabs } from '${resolve("./components/Tabs/Tabs.astro")}';
57
+ export { default as TabItem } from '${resolve("./components/Tabs/TabItem.astro")}';
58
+ export { default as Accordion } from '${resolve("./components/Accordion/Accordion.astro")}';
59
+ export { default as AccordionItem } from '${resolve("./components/Accordion/Item.astro")}';
60
+ export { default as Footer } from '${resolve("./components/Footer/Footer.astro")}';
61
+ export { default as Progress } from '${resolve("./components/Progress/Progress.astro")}';
62
+ export { default as Sidebar } from '${resolve("./components/Sidebar/Single.astro")}';
63
+ export { default as DoubleSidebar } from '${resolve("./components/Sidebar/Double.astro")}';
64
+ export { default as Breadcrumbs } from '${resolve("./components/Breadcrumbs/Breadcrumbs.astro")}';
65
+ export { default as Group } from '${resolve("./components/Group/Group.astro")}';
66
+ export { default as Badge } from '${resolve("./components/Badge/Badge.astro")}';
67
+ export { default as Icon } from '${resolve("./components/Icon/Icon.astro")}';
68
+
69
+ export { ProgressHelper } from '${resolve("./components/Progress/helper.js")}';
70
+ export { SingleSidebarHelper, DoubleSidebarHelper } from '${resolve("./components/Sidebar/helpers.js")}';
71
+ export { toast } from '${resolve("./components/Toast/toast.js")}';
72
+ export { ModalHelper } from '${resolve("./components/Modal/modal.js")}';
73
+ export { DropdownHelper } from '${resolve("./components/Dropdown/dropdown.js")}';
74
+
75
+ export * from '${resolve("./components/Icon/iconType.js")}';
76
+ `,
77
+ "studiocms:ui/utils": `
78
+ export { ThemeHelper, Theme } from '${resolve("./utils/ThemeHelper.js")}';
79
+ `
80
+ }
81
+ });
82
+ injectScript("page-ssr", `import 'studiocms:ui/global-css';`);
83
+ if (options.customCss) {
84
+ injectScript("page-ssr", `import 'studiocms:ui/custom-css';`);
85
+ }
86
+ addDevToolbarApp({
87
+ id: "studiocms-ui-toolbar",
88
+ name: "StudioCMS/UI",
89
+ entrypoint: resolve("./toolbar/index.js"),
90
+ icon: studiocmsLogo
91
+ });
92
+ },
93
+ "astro:config:done": ({ injectTypes }) => {
94
+ injectTypes({
95
+ filename: "types.d.ts",
96
+ content: `
97
+ declare module 'studiocms:ui/version' {
98
+ const version: string;
99
+ export default version;
100
+ }
101
+
102
+ declare module 'studiocms:ui/global-css' {}
103
+
104
+ declare module 'studiocms:ui/custom-css' {}
105
+
106
+ declare module 'studiocms:ui/scripts/*' {}
107
+
108
+ declare module 'studiocms:ui/components' {
109
+ export const Button: typeof import('${resolve("./components/Button/Button.astro")}').default;
110
+ export const Divider: typeof import('${resolve("./components/Divider/Divider.astro")}').default;
111
+ export const Input: typeof import('${resolve("./components/Input/Input.astro")}').default;
112
+ export const Row: typeof import('${resolve("./components/Row/Row.astro")}').default;
113
+ export const Center: typeof import('${resolve("./components/Center/Center.astro")}').default;
114
+ export const Textarea: typeof import('${resolve("./components/Textarea/Textarea.astro")}').default;
115
+ export const Checkbox: typeof import('${resolve("./components/Checkbox/Checkbox.astro")}').default;
116
+ export const Toggle: typeof import('${resolve("./components/Toggle/Toggle.astro")}').default;
117
+ export const RadioGroup: typeof import('${resolve("./components/RadioGroup/RadioGroup.astro")}').default;
118
+ export const Toaster: typeof import('${resolve("./components/Toast/Toaster.astro")}').default;
119
+ export const Card: typeof import('${resolve("./components/Card/Card.astro")}').default;
120
+ export const Modal: typeof import('${resolve("./components/Modal/Modal.astro")}').default;
121
+ export const Select: typeof import('${resolve("./components/Select/Select.astro")}').default;
122
+ export const SearchSelect: typeof import('${resolve("./components/SearchSelect/SearchSelect.astro")}').default;
123
+ export const Dropdown: typeof import('${resolve("./components/Dropdown/Dropdown.astro")}').default;
124
+ export const User: typeof import('${resolve("./components/User/User.astro")}').default;
125
+ export const ThemeToggle: typeof import('${resolve("./components/ThemeToggle/ThemeToggle.astro")}').default;
126
+ export const Tabs: typeof import('${resolve("./components/Tabs/Tabs.astro")}').default;
127
+ export const TabItem: typeof import('${resolve("./components/Tabs/TabItem.astro")}').default;
128
+ export const Accordion: typeof import('${resolve("./components/Accordion/Accordion.astro")}').default;
129
+ export const AccordionItem: typeof import('${resolve("./components/Accordion/Item.astro")}').default;
130
+ export const Footer: typeof import('${resolve("./components/Footer/Footer.astro")}').default;
131
+ export const Progress: typeof import('${resolve("./components/Progress/Progress.astro")}').default;
132
+ export const Sidebar: typeof import('${resolve("./components/Sidebar/Single.astro")}').default;
133
+ export const DoubleSidebar: typeof import('${resolve("./components/Sidebar/Double.astro")}').default;
134
+ export const Breadcrumbs: typeof import('${resolve("./components/Breadcrumbs/Breadcrumbs.astro")}').default;
135
+ export const Group: typeof import('${resolve("./components/Group/Group.astro")}').default;
136
+ export const Badge: typeof import('${resolve("./components/Badge/Badge.astro")}').default;
137
+ export const Icon: typeof import('${resolve("./components/Icon/Icon.astro")}').default;
138
+ export const toast: typeof import('${resolve("./components/Toast/toast.js")}').toast;
139
+ export type HeroIconName = import('${resolve("./components/Icon/iconType.js")}').HeroIconName;
140
+
141
+ export class ModalHelper {
142
+ private element;
143
+ private cancelButton;
144
+ private confirmButton;
145
+ private isForm;
146
+ private modalForm;
147
+ /**
148
+ * A helper to manage modals.
149
+ * @param id The ID of the modal.
150
+ * @param triggerID The ID of the element that should trigger the modal.
151
+ */
152
+ constructor(id: string, triggerID?: string);
153
+ /**
154
+ * A helper function which adds event listeners to the modal buttons to close the modal when clicked.
155
+ * @param id The ID of the modal.
156
+ * @param dismissable Whether the modal is dismissable.
157
+ */
158
+ private addButtonListeners;
159
+ /**
160
+ * A helper function to close the modal when the user clicks outside of it.
161
+ */
162
+ private addDismissiveClickListener;
163
+ /**
164
+ * A function to show the modal.
165
+ */
166
+ show: () => void;
167
+ /**
168
+ * A function to hide the modal.
169
+ */
170
+ hide: () => void;
171
+ /**
172
+ * A function to add another trigger to show the modal with.
173
+ * @param elementID The ID of the element that should trigger the modal when clicked.
174
+ */
175
+ bindTrigger: (elementID: string) => void;
176
+ /**
177
+ * Registers a callback for the cancel button.
178
+ * @param func The callback function.
179
+ */
180
+ registerCancelCallback: (func: () => void) => void;
181
+ /**
182
+ * Registers a callback for the confirm button.
183
+ * @param func The callback function. If the modal is a form, the function will be called with
184
+ * the form data as the first argument.
185
+ */
186
+ registerConfirmCallback: (func: (data?: FormData | undefined) => void) => void;
187
+ }
188
+
189
+ export class DropdownHelper {
190
+ private container;
191
+ private toggleEl;
192
+ private dropdown;
193
+ private alignment;
194
+ private triggerOn;
195
+ private fullWidth;
196
+ private focusIndex;
197
+ active: boolean;
198
+ /**
199
+ * A helper function to interact with dropdowns.
200
+ * @param id The ID of the dropdown.
201
+ * @param fullWidth Whether the dropdown should be full width. Not needed normally.
202
+ */
203
+ constructor(id: string, fullWidth?: boolean);
204
+ /**
205
+ * Registers a click callback for the dropdown options. Whenever one of the options
206
+ * is clicked, the callback will be called with the value of the option.
207
+ * @param func The callback function.
208
+ */
209
+ registerClickCallback: (func: (value: string) => void) => void;
210
+ /**
211
+ * Sets up all listeners for the dropdown.
212
+ */
213
+ private initialBehaviorRegistration;
214
+ /**
215
+ * Registers callbacks to hide the dropdown when an option is clicked.
216
+ */
217
+ private initialOptClickRegistration;
218
+ /**
219
+ * A function to toggle the dropdown.
220
+ */
221
+ toggle: () => void;
222
+ /**
223
+ * A function to hide the dropdown.
224
+ */
225
+ hide: () => void;
226
+ /**
227
+ * A function to show the dropdown.
228
+ */
229
+ show: () => void;
230
+ /**
231
+ * A jQuery-like function to hide the dropdown when clicking outside of it.
232
+ * @param element The element to hide when clicking outside of it.
233
+ */
234
+ private hideOnClickOutside;
235
+ }
236
+
237
+ export class ProgressHelper {
238
+ private bar;
239
+ private progress;
240
+ private value;
241
+ private max;
242
+ constructor(id: string);
243
+ getValue(): number;
244
+ setValue(value: number): void;
245
+ getMax(): number;
246
+ setMax(value: number): void;
247
+ getPercentage(): number;
248
+ }
249
+
250
+ export class SingleSidebarHelper {
251
+ private sidebar;
252
+ private sidebarToggle?;
253
+ /**
254
+ * A helper to manage the sidebar with.
255
+ * @param toggleID The ID of the element that should toggle the sidebar.
256
+ */
257
+ constructor(toggleID?: string);
258
+ /**
259
+ * A helper function register an element which should toggle the sidebar.
260
+ * @param elementID The ID of the element that should toggle the sidebar.
261
+ */
262
+ toggleSidebarOnClick: (elementID: string) => void;
263
+ /**
264
+ * A helper function to hide the sidebar when an element is clicked.
265
+ * @param elementID The ID of the element that should hide the sidebar.
266
+ */
267
+ hideSidebarOnClick: (elementID: string) => void;
268
+ /**
269
+ * A helper function to show the sidebar when an element is clicked.
270
+ * @param elementID The ID of the element that should show the sidebar.
271
+ */
272
+ showSidebarOnClick: (elementID: string) => void;
273
+ /**
274
+ * A function to hide the sidebar.
275
+ */
276
+ hideSidebar: () => void;
277
+ /**
278
+ * A function to show the sidebar.
279
+ */
280
+ showSidebar: () => void;
281
+ }
282
+
283
+ export class DoubleSidebarHelper {
284
+ private sidebarsContainer;
285
+ /**
286
+ * A helper to manage the double sidebar with.
287
+ */
288
+ constructor();
289
+ /**
290
+ * A helper function to hide the sidebar when an element is clicked.
291
+ * @param elementID The ID of the element that should hide the sidebar.
292
+ */
293
+ hideSidebarOnClick: (elementID: string) => void;
294
+ /**
295
+ * A helper function to show the outer sidebar when an element is clicked.
296
+ * @param elementID The ID of the element that should show the outer sidebar.
297
+ */
298
+ showOuterOnClick: (elementID: string) => void;
299
+ /**
300
+ * A helper function to show the inner sidebar when an element is clicked.
301
+ * @param elementID The ID of the element that should show the inner sidebar.
302
+ */
303
+ showInnerOnClick: (elementID: string) => void;
304
+ /**
305
+ * A function to show the inner sidebar.
306
+ */
307
+ showInnerSidebar: () => void;
308
+ /**
309
+ * A function to show the outer sidebar.
310
+ */
311
+ showOuterSidebar: () => void;
312
+ /**
313
+ * A function to hide the sidebar altogether.
314
+ */
315
+ hideSidebar: () => void;
316
+ }
317
+ }
318
+
319
+ declare module 'studiocms:ui/utils' {
320
+ export type Theme = import('${resolve("./utils/ThemeHelper.js")}').Theme;
321
+
322
+ type ThemeChangeCallback = (newTheme: Theme, oldTheme: Theme) => void;
323
+
324
+ /**
325
+ * A helper to toggle, set and get the current StudioCMS UI theme.
326
+ */
327
+ export class ThemeHelper {
328
+ private themeManagerElement;
329
+ private observer;
330
+ private themeChangeCallbacks;
331
+ /**
332
+ * A helper to toggle, set and get the current StudioCMS UI theme.
333
+ * @param themeProvider The element that should carry the data-theme attribute (replaces the document root)
334
+ */
335
+ constructor(themeProvider?: HTMLElement);
336
+ /**
337
+ * Get the current theme.
338
+ * @param {boolean} resolveSystemTheme Whether to resolve the \`system\` theme to the actual theme (\`dark\` or \`light\`)
339
+ * @returns {Theme} The current theme.
340
+ */
341
+ getTheme: <T extends boolean>(resolveSystemTheme?: T) => T extends true ? "dark" | "light" : Theme;
342
+ /**
343
+ * Sets the current theme.
344
+ * @param theme The new theme. One of \`dark\`, \`light\` or \`system\`.
345
+ */
346
+ setTheme: (theme: Theme) => void;
347
+ /**
348
+ * Toggles the current theme.
349
+ *
350
+ * If the theme is set to \`system\` (or no theme is set via the root element),
351
+ * the theme is set depending on the user's color scheme preference (set in the browser).
352
+ */
353
+ toggleTheme: () => void;
354
+ /**
355
+ * Register an element to act as a toggle! When clicked, it will toggle the theme.
356
+ * @param toggle The HTML element that should act as the toggle
357
+ */
358
+ registerToggle: (toggle: HTMLElement | null) => void;
359
+ /**
360
+ * Allows for adding a callback that gets called whenever the theme changes.
361
+ * @param callback The callback to be executed
362
+ */
363
+ onThemeChange: (callback: ThemeChangeCallback) => void;
364
+ /**
365
+ * Simply gets the first mutation and calls all registered callbacks.
366
+ * @param mutations The mutations array from the observer. Due to the specified options, this will always be a 1-length array,
367
+ */
368
+ private themeManagerMutationHandler;
369
+ }
370
+ }
371
+ `
372
+ });
373
+ }
374
+ }
375
+ };
376
+ }
377
+ export {
378
+ integration as default
379
+ };
@@ -0,0 +1,7 @@
1
+ export default class DevToolbarColorPicker extends HTMLElement {
2
+ private input;
3
+ constructor();
4
+ connectedCallback(): void;
5
+ getColor(): string;
6
+ setColor(color: string): void;
7
+ }
@@ -0,0 +1,85 @@
1
+ function hex2rgb(hex) {
2
+ const r = Number.parseInt(hex.slice(1, 3), 16);
3
+ const g = Number.parseInt(hex.slice(3, 5), 16);
4
+ const b = Number.parseInt(hex.slice(5, 7), 16);
5
+ return [r, g, b];
6
+ }
7
+ function hueToRgb(p, q, t) {
8
+ if (t < 0) t += 1;
9
+ if (t > 1) t -= 1;
10
+ if (t < 1 / 6) return p + (q - p) * 6 * t;
11
+ if (t < 1 / 2) return q;
12
+ if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;
13
+ return p;
14
+ }
15
+ function hsl2rgb(hsl) {
16
+ const [h, sPercent, lPercent] = hsl;
17
+ const s = sPercent / 100;
18
+ const l = lPercent / 100;
19
+ let r, g, b;
20
+ if (s === 0) {
21
+ r = g = b = l;
22
+ } else {
23
+ const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
24
+ const p = 2 * l - q;
25
+ const hueFraction = h / 360;
26
+ r = hueToRgb(p, q, hueFraction + 1 / 3);
27
+ g = hueToRgb(p, q, hueFraction);
28
+ b = hueToRgb(p, q, hueFraction - 1 / 3);
29
+ }
30
+ return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
31
+ }
32
+ function rgb2hex(rgb) {
33
+ const [r, g, b] = rgb;
34
+ return `#${r.toString(16).padStart(2, "0")}${g.toString(16).padStart(2, "0")}${b.toString(16).padStart(2, "0")}`;
35
+ }
36
+ function rgb2hsl(rgb) {
37
+ const [r, g, b] = rgb.map((v) => v / 255);
38
+ const max = Math.max(r, g, b);
39
+ const min = Math.min(r, g, b);
40
+ const l = (max + min) / 2;
41
+ let s = 0;
42
+ if (max !== min) {
43
+ s = l > 0.5 ? (max - min) / (2 - max - min) : (max - min) / (max + min);
44
+ }
45
+ let h = 0;
46
+ if (max !== min) {
47
+ if (max === r) {
48
+ h = ((g - b) / (max - min) + (g < b ? 6 : 0)) * 60;
49
+ } else if (max === g) {
50
+ h = ((b - r) / (max - min) + 2) * 60;
51
+ } else {
52
+ h = ((r - g) / (max - min) + 4) * 60;
53
+ }
54
+ }
55
+ return [h, s * 100, l * 100];
56
+ }
57
+ class DevToolbarColorPicker extends HTMLElement {
58
+ input;
59
+ constructor() {
60
+ super();
61
+ const shadowRoot = this.attachShadow({ mode: "open" });
62
+ shadowRoot.innerHTML = `<input type="color" />`;
63
+ this.input = shadowRoot.firstElementChild;
64
+ this.input.addEventListener("input", () => {
65
+ this.dataset.color = this.input.value;
66
+ });
67
+ }
68
+ connectedCallback() {
69
+ this.input.value = rgb2hex(
70
+ hsl2rgb(this.dataset.color.replaceAll("%", "").split(" ").map(Number))
71
+ );
72
+ }
73
+ getColor() {
74
+ const rgb = hex2rgb(this.input.value);
75
+ const hsl = rgb2hsl(rgb).map((v) => Math.round(v));
76
+ const [h, s, l] = hsl;
77
+ return `${h} ${s}% ${l}%`;
78
+ }
79
+ setColor(color) {
80
+ this.input.value = rgb2hex(hsl2rgb(color.replaceAll("%", "").split(" ").map(Number)));
81
+ }
82
+ }
83
+ export {
84
+ DevToolbarColorPicker as default
85
+ };
@@ -0,0 +1 @@
1
+ export declare const studiocmsLogo: string;