@rfdtech/components 2.0.1 → 2.1.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 (62) hide show
  1. package/README.md +49 -5
  2. package/dist/components/app-layout/AppSidebar.d.ts +1 -1
  3. package/dist/components/app-layout/AppSidebar.d.ts.map +1 -1
  4. package/dist/components/bulk-import-modal/BulkImportModal.d.ts.map +1 -1
  5. package/dist/components/card/Card.d.ts.map +1 -1
  6. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  7. package/dist/components/date-selector/DateSelector.d.ts.map +1 -1
  8. package/dist/components/launchpad/Launchpad.d.ts.map +1 -1
  9. package/dist/components/lottie/ClientLottie.d.ts +6 -0
  10. package/dist/components/lottie/ClientLottie.d.ts.map +1 -0
  11. package/dist/components/page-section/PageSection.d.ts +4 -0
  12. package/dist/components/page-section/PageSection.d.ts.map +1 -0
  13. package/dist/components/page-section/PageSection.test.d.ts +2 -0
  14. package/dist/components/page-section/PageSection.test.d.ts.map +1 -0
  15. package/dist/components/page-section/index.d.ts +2 -0
  16. package/dist/components/page-section/index.d.ts.map +1 -0
  17. package/dist/components/quick-actions/QuickActions.d.ts +4 -0
  18. package/dist/components/quick-actions/QuickActions.d.ts.map +1 -0
  19. package/dist/components/quick-actions/QuickActions.test.d.ts +2 -0
  20. package/dist/components/quick-actions/QuickActions.test.d.ts.map +1 -0
  21. package/dist/components/quick-actions/index.d.ts +2 -0
  22. package/dist/components/quick-actions/index.d.ts.map +1 -0
  23. package/dist/components/sidebar/Sidebar.d.ts.map +1 -1
  24. package/dist/components/table/ProgressModal.d.ts.map +1 -1
  25. package/dist/components/table/Table.d.ts.map +1 -1
  26. package/dist/generated/components.theme.d.ts +1 -0
  27. package/dist/generated/components.theme.d.ts.map +1 -1
  28. package/dist/index.cjs +28 -28
  29. package/dist/index.css +1 -1
  30. package/dist/index.d.ts +2 -0
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +6344 -5996
  33. package/dist/mcp/generated/components.json +176 -17
  34. package/dist/mcp/generated/examples.json +37 -1
  35. package/dist/mcp/generated/index.meta.json +45 -35
  36. package/dist/mcp/generated/rules.json +12 -3
  37. package/dist/mcp/generated/search.json +79 -1
  38. package/dist/mcp/generated/tokens.json +9 -3
  39. package/dist/mcp/installers/codex.js +2 -1
  40. package/dist/mcp/installers/opencode.js +6 -2
  41. package/dist/mcp/installers/setup.js +1 -1
  42. package/dist/mcp/installers/util.js +14 -1
  43. package/dist/next.cjs +89 -99
  44. package/dist/next.css +1 -1
  45. package/dist/next.js +16693 -24581
  46. package/dist/types/card.d.ts +2 -0
  47. package/dist/types/card.d.ts.map +1 -1
  48. package/dist/types/combobox.d.ts +3 -0
  49. package/dist/types/combobox.d.ts.map +1 -1
  50. package/dist/types/date-selector.d.ts +4 -0
  51. package/dist/types/date-selector.d.ts.map +1 -1
  52. package/dist/types/launchpad.d.ts +5 -2
  53. package/dist/types/launchpad.d.ts.map +1 -1
  54. package/dist/types/metric-card.d.ts +6 -2
  55. package/dist/types/metric-card.d.ts.map +1 -1
  56. package/dist/types/page-section.d.ts +9 -0
  57. package/dist/types/page-section.d.ts.map +1 -0
  58. package/dist/types/quick-actions.d.ts +35 -0
  59. package/dist/types/quick-actions.d.ts.map +1 -0
  60. package/dist/types/sidebar.d.ts +10 -0
  61. package/dist/types/sidebar.d.ts.map +1 -1
  62. package/package.json +1 -1
@@ -205,6 +205,15 @@
205
205
  ],
206
206
  "source": "import { Combobox } from \"@rfdtech/components\";\nimport { Star } from \"lucide-react\";\nimport { useState } from \"react\";\n\nconst options = [\n { value: \"1\", label: \"Option 1\", icon: <Star size={16} /> },\n { value: \"2\", label: \"Option 2\", icon: <Star size={16} /> },\n { value: \"3\", label: \"Option 3\", icon: <Star size={16} /> },\n];\n\nexport function ComboboxIconsExample() {\n const [value, setValue] = useState<string[]>([\"1\", \"2\"]);\n\n return (\n <Combobox\n aria-label=\"Select options\"\n placeholder=\"Select\"\n options={options}\n value={value}\n onValueChange={setValue}\n multiple\n />\n );\n}\n"
207
207
  },
208
+ {
209
+ "file": "combobox-long.example.tsx",
210
+ "importName": "comboboxLongSource",
211
+ "title": "Combobox Long",
212
+ "components": [
213
+ "Combobox"
214
+ ],
215
+ "source": "import { Combobox } from \"@rfdtech/components\";\nimport { useState } from \"react\";\n\nconst options = Array.from({ length: 20 }, (_, i) => ({\n value: String(i + 1),\n label: `Option ${i + 1}`,\n}));\n\nexport function ComboboxLongExample() {\n const [value, setValue] = useState<string | null>(null);\n\n return (\n <Combobox\n aria-label=\"Select\"\n placeholder=\"Select\"\n options={options}\n value={value}\n onValueChange={setValue}\n clearable\n />\n );\n}\n"
216
+ },
208
217
  {
209
218
  "file": "combobox-multi.example.tsx",
210
219
  "importName": "comboboxMultiSource",
@@ -269,6 +278,7 @@
269
278
  "source": "import { CountrySelector } from \"@rfdtech/components\";\n\nexport function CountrySelectorExample() {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16, maxWidth: 300 }}>\n <CountrySelector />\n <CountrySelector invalid />\n <CountrySelector disabled />\n </div>\n );\n}\n"
270
279
  }
271
280
  ],
281
+ "dashboard-patterns": [],
272
282
  "date-range-selector": [
273
283
  {
274
284
  "file": "date-range-filter.example.tsx",
@@ -536,7 +546,7 @@
536
546
  "components": [
537
547
  "MetricCard"
538
548
  ],
539
- "source": "import { MetricCard } from \"@rfdtech/components\";\n\nexport function MetricCardExample() {\n return (\n <div\n style={{\n background: \"var(--clet-surface-subtle)\",\n padding: 20,\n borderRadius: \"var(--clet-radius-xl)\",\n width: \"100%\",\n }}\n >\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: 16 }}>\n <div style={{ minWidth: 200, flex: 1 }}>\n <MetricCard\n label=\"Revenue\"\n value=\"$128.4k\"\n description=\"Total revenue this quarter\"\n trend=\"up\"\n trendValue=\"+12.5%\"\n animate\n />\n </div>\n <div style={{ minWidth: 200, flex: 1 }}>\n <MetricCard\n label=\"Active users\"\n value=\"2,847\"\n description=\"Current active users\"\n trend=\"down\"\n trendValue=\"-3.2%\"\n animate\n />\n </div>\n <div style={{ minWidth: 200, flex: 1 }}>\n <MetricCard\n label=\"Avg response\"\n value=\"1.2s\"\n description=\"Average API response time\"\n animate\n />\n </div>\n </div>\n\n <div\n style={{ display: \"flex\", flexWrap: \"wrap\", gap: 16, marginTop: 16 }}\n >\n <div style={{ minWidth: 200, flex: 1 }}>\n <MetricCard\n variant=\"outline\"\n label=\"Revenue\"\n value=\"$128.4k\"\n description=\"Total revenue this quarter\"\n trend=\"up\"\n trendValue=\"12.5%\"\n />\n </div>\n <div style={{ minWidth: 200, flex: 1 }}>\n <MetricCard\n variant=\"outline\"\n label=\"Active users\"\n value=\"2,847\"\n description=\"Current active users\"\n trend=\"down\"\n trendValue=\"3.2%\"\n />\n </div>\n <div style={{ minWidth: 200, flex: 1 }}>\n <MetricCard\n variant=\"outline\"\n label=\"Avg response\"\n value=\"1.2s\"\n description=\"Average API response time\"\n trend=\"neutral\"\n trendValue=\"0.0%\"\n />\n </div>\n </div>\n </div>\n );\n}\n"
549
+ "source": "import { MetricCard } from \"@rfdtech/components\";\n\nexport function MetricCardExample() {\n return (\n <div\n style={{\n background: \"var(--clet-surface-subtle)\",\n padding: 20,\n borderRadius: \"var(--clet-radius-xl)\",\n width: \"100%\",\n }}\n >\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: 16 }}>\n <div style={{ minWidth: 200, flex: 1 }}>\n <MetricCard\n label=\"Revenue\"\n value=\"$128.4k\"\n description=\"Total revenue this quarter\"\n trend=\"up\"\n trendValue=\"+12.5%\"\n animate\n />\n </div>\n <div style={{ minWidth: 200, flex: 1 }}>\n <MetricCard\n label=\"Active users\"\n value=\"2,847\"\n description=\"Current active users\"\n trend=\"down\"\n trendValue=\"-3.2%\"\n animate\n />\n </div>\n <div style={{ minWidth: 200, flex: 1 }}>\n <MetricCard\n label=\"Avg response\"\n value=\"1.2s\"\n description=\"Average API response time\"\n animate\n />\n </div>\n </div>\n\n <div\n style={{ display: \"flex\", flexWrap: \"wrap\", gap: 16, marginTop: 16 }}\n >\n <div style={{ minWidth: 200, flex: 1 }}>\n <MetricCard\n variant=\"outline\"\n label=\"Revenue\"\n value=\"$128.4k\"\n description=\"Total revenue this quarter\"\n trend=\"up\"\n trendValue=\"12.5%\"\n />\n </div>\n <div style={{ minWidth: 200, flex: 1 }}>\n <MetricCard\n variant=\"outline\"\n label=\"Active users\"\n value=\"2,847\"\n description=\"Current active users\"\n trend=\"down\"\n trendValue=\"3.2%\"\n />\n </div>\n <div style={{ minWidth: 200, flex: 1 }}>\n <MetricCard\n variant=\"outline\"\n label=\"Avg response\"\n value=\"1.2s\"\n description=\"Average API response time\"\n trend=\"neutral\"\n trendValue=\"0.0%\"\n />\n </div>\n </div>\n\n <div\n style={{ display: \"flex\", flexWrap: \"wrap\", gap: 16, marginTop: 16 }}\n >\n <div style={{ minWidth: 200, flex: 1 }}>\n <MetricCard\n variant=\"bordered\"\n label=\"Revenue\"\n value=\"$128.4k\"\n description=\"Total revenue this quarter\"\n />\n </div>\n <div style={{ minWidth: 200, flex: 1 }}>\n <MetricCard\n variant=\"bordered\"\n label=\"Active users\"\n value=\"2,847\"\n description=\"Current active users\"\n />\n </div>\n <div style={{ minWidth: 200, flex: 1 }}>\n <MetricCard\n variant=\"bordered\"\n label=\"Avg response\"\n value=\"1.2s\"\n description=\"Average API response time\"\n />\n </div>\n </div>\n </div>\n );\n}\n"
540
550
  }
541
551
  ],
542
552
  "migration-v2": [],
@@ -619,6 +629,21 @@
619
629
  "source": "import { useState } from \"react\";\nimport {\n Button,\n Dialog,\n DialogContent,\n DialogDescription,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n OtpInput,\n} from \"@rfdtech/components\";\n\n// Mock \"correct\" code — stands in for a real server-side verification call.\nconst MOCK_VALID_CODE = \"123456\";\n\ntype VerifyStatus = \"idle\" | \"verifying\" | \"error\" | \"success\";\n\nexport function OtpVerifyDialogExample() {\n const [open, setOpen] = useState(false);\n const [code, setCode] = useState(\"\");\n const [status, setStatus] = useState<VerifyStatus>(\"idle\");\n\n const reset = () => {\n setCode(\"\");\n setStatus(\"idle\");\n };\n\n const verify = (value: string) => {\n if (value.length < 6 || status === \"verifying\") return;\n setStatus(\"verifying\");\n // Simulate an async verification request.\n setTimeout(() => {\n if (value === MOCK_VALID_CODE) {\n setStatus(\"success\");\n setTimeout(() => {\n setOpen(false);\n reset();\n }, 900);\n } else {\n setStatus(\"error\");\n }\n }, 1200);\n };\n\n return (\n <>\n <Button\n variant=\"secondary\"\n onClick={() => {\n reset();\n setOpen(true);\n }}\n >\n Verify identity\n </Button>\n\n <Dialog\n open={open}\n onOpenChange={(next) => {\n setOpen(next);\n if (!next) reset();\n }}\n >\n <DialogPortal>\n <DialogOverlay />\n <DialogContent showCloseButton>\n <DialogTitle>Two-factor verification</DialogTitle>\n <DialogDescription>\n Enter the 6-digit code sent to your registered device to confirm\n this action. (Hint: the mock code is <code>123456</code>.)\n </DialogDescription>\n\n <div style={{ display: \"grid\", gap: 8 }}>\n <OtpInput\n length={6}\n value={code}\n disabled={status === \"verifying\" || status === \"success\"}\n invalid={status === \"error\"}\n onChange={(value) => {\n setCode(value);\n if (status === \"error\") setStatus(\"idle\");\n }}\n onComplete={(value) => verify(value)}\n />\n {status === \"error\" && (\n <p style={{ margin: 0, fontSize: 13, color: \"var(--clet-error-text)\" }}>\n Incorrect code. Please try again.\n </p>\n )}\n {status === \"success\" && (\n <p style={{ margin: 0, fontSize: 13, color: \"var(--clet-success)\" }}>\n Verified successfully.\n </p>\n )}\n </div>\n\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", gap: 8 }}>\n <Button\n variant=\"ghost\"\n onClick={() => setOpen(false)}\n disabled={status === \"verifying\"}\n >\n Cancel\n </Button>\n <Button\n onClick={() => verify(code)}\n disabled={code.length < 6 || status === \"verifying\" || status === \"success\"}\n loading={status === \"verifying\"}\n loadingLabel=\"Verifying...\"\n >\n Verify\n </Button>\n </div>\n </DialogContent>\n </DialogPortal>\n </Dialog>\n </>\n );\n}\n"
620
630
  }
621
631
  ],
632
+ "page-section": [
633
+ {
634
+ "file": "page-section.example.tsx",
635
+ "importName": "pageSectionSource",
636
+ "title": "Page Section",
637
+ "components": [
638
+ "Card",
639
+ "PageSection",
640
+ "SectionDescription",
641
+ "SectionHeader",
642
+ "SectionTitle"
643
+ ],
644
+ "source": "import {\n PageSection,\n SectionHeader,\n SectionTitle,\n SectionDescription,\n Card,\n} from \"@rfdtech/components\";\n\nexport function PageSectionExample() {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 0, width: \"100%\" }}>\n <PageSection>\n <SectionHeader>\n <SectionTitle>Dashboard</SectionTitle>\n <SectionDescription>\n Sections are separated by consistent vertical gap.\n </SectionDescription>\n </SectionHeader>\n </PageSection>\n\n <PageSection>\n <div\n style={{\n height: 80,\n borderRadius: \"var(--clet-radius-xl)\",\n border: \"1px dashed var(--clet-border)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 14,\n color: \"var(--clet-text-secondary)\",\n }}\n >\n Metric cards or stats grid\n </div>\n </PageSection>\n\n <PageSection>\n <Card bordered>\n <div\n style={{\n height: 120,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 14,\n color: \"var(--clet-text-secondary)\",\n }}\n >\n Table or content area\n </div>\n </Card>\n </PageSection>\n </div>\n );\n}\n"
645
+ }
646
+ ],
622
647
  "phone-number-input": [
623
648
  {
624
649
  "file": "phone-number-input-field.example.tsx",
@@ -763,6 +788,17 @@
763
788
  "source": "import { ProgressBar } from \"@rfdtech/components\";\n\nexport function ProgressBarExample() {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"16px\", width: \"100%\" }}>\n <ProgressBar value={60} label=\"Upload progress\" showValue />\n <ProgressBar value={100} variant=\"success\" showValue />\n <ProgressBar value={45} variant=\"warning\" />\n <ProgressBar value={20} variant=\"error\" size=\"md\" />\n <ProgressBar indeterminate label=\"Loading\" size=\"md\" />\n </div>\n );\n}\n"
764
789
  }
765
790
  ],
791
+ "quick-actions": [
792
+ {
793
+ "file": "quick-actions.example.tsx",
794
+ "importName": "quickActionsSource",
795
+ "title": "Quick Actions",
796
+ "components": [
797
+ "QuickActions"
798
+ ],
799
+ "source": "import { useMemo, useState } from \"react\";\nimport { QuickActions } from \"@rfdtech/components\";\nimport { UserPlus, Download, BarChart3, Shield, History, FileText } from \"lucide-react\";\n\nconst allActions = [\n { id: \"add\", label: \"Add Member\", icon: <UserPlus size={18} strokeWidth={1.5} />, description: \"Create a new member account\" },\n { id: \"export\", label: \"Export Data\", icon: <Download size={18} strokeWidth={1.5} />, description: \"Download member records\" },\n { id: \"reports\", label: \"View Reports\", icon: <BarChart3 size={18} strokeWidth={1.5} />, description: \"Access analytics and reports\" },\n { id: \"roles\", label: \"Manage Roles\", icon: <Shield size={18} strokeWidth={1.5} />, description: \"Configure role permissions\" },\n { id: \"audit\", label: \"Audit Log\", icon: <History size={18} strokeWidth={1.5} />, description: \"Review system audit trail\" },\n { id: \"docs\", label: \"Documents\", icon: <FileText size={18} strokeWidth={1.5} />, description: \"Browse and manage documents\" },\n];\n\nexport function QuickActionsExample() {\n const [hiddenIds, setHiddenIds] = useState<Set<string>>(new Set());\n const visibleActions = useMemo(\n () => allActions.filter((a) => !hiddenIds.has(a.id)),\n [hiddenIds],\n );\n\n return (\n <div style={{ width: \"100%\", maxWidth: 640 }}>\n <QuickActions\n actions={visibleActions}\n customizable\n hiddenIds={hiddenIds}\n onToggleVisibility={(id) => {\n setHiddenIds((prev) => {\n const next = new Set(prev);\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n return next;\n });\n }}\n />\n </div>\n );\n}\n"
800
+ }
801
+ ],
766
802
  "radio-group": [
767
803
  {
768
804
  "file": "radio-decision-form.example.tsx",
@@ -1,5 +1,5 @@
1
1
  {
2
- "builtAt": 1784205382095,
2
+ "builtAt": 1785019240756,
3
3
  "builtFrom": {
4
4
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/app-header.mdx": 1784199965193.8657,
5
5
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/app-layout.mdx": 1784199965194.078,
@@ -8,14 +8,15 @@
8
8
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/breadcrumb.mdx": 1784199965194.5928,
9
9
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/bulk-import-modal.mdx": 1784199965194.803,
10
10
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/button.mdx": 1784199965195.0093,
11
- "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/card.mdx": 1784199965195.441,
12
- "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/changelog.mdx": 1784204823076.601,
11
+ "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/card.mdx": 1785019071703.3171,
12
+ "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/changelog.mdx": 1785019071704.073,
13
13
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/checkbox.mdx": 1784199965196.152,
14
- "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/combobox.mdx": 1784199965196.2634,
14
+ "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/combobox.mdx": 1785019071704.7,
15
15
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/command.mdx": 1784199965196.4404,
16
16
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/country-selector.mdx": 1784199965196.5872,
17
+ "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/dashboard-patterns.mdx": 1785019071704.85,
17
18
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/date-range-selector.mdx": 1784199965196.9058,
18
- "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/date-selector.mdx": 1784199965197.09,
19
+ "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/date-selector.mdx": 1785019071705.0527,
19
20
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/dialog.mdx": 1784199965197.2744,
20
21
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/draggable.mdx": 1784199965197.4387,
21
22
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/dropdown.mdx": 1784199965197.6196,
@@ -24,31 +25,33 @@
24
25
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/form.mdx": 1784199965198.42,
25
26
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/getting-started.mdx": 1784199965198.9243,
26
27
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/hooks.mdx": 1784199965199.1636,
27
- "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/launchpad.mdx": 1784199965199.2974,
28
- "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/metric-card.mdx": 1784199965199.533,
29
- "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/migration-v2.mdx": 1784204823077.3882,
28
+ "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/launchpad.mdx": 1785019071705.438,
29
+ "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/metric-card.mdx": 1785019071705.6873,
30
+ "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/migration-v2.mdx": 1785019071706.234,
30
31
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/modal.mdx": 1784199965200.2097,
31
32
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/network-operator.mdx": 1784199965200.3953,
32
33
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/notice.mdx": 1784199965200.5305,
33
34
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/otp-input.mdx": 1784199965200.7048,
35
+ "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/page-section.mdx": 1785019071706.379,
34
36
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/phone-number-input.mdx": 1784199965201.1082,
35
37
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/popover.mdx": 1784199965201.311,
36
38
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/popup.mdx": 1784199965201.437,
37
39
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/profile-popover.mdx": 1784199965201.56,
38
40
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/progress-bar.mdx": 1784199965201.9417,
41
+ "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/quick-actions.mdx": 1785019071706.604,
39
42
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/radio-group.mdx": 1784199965202.1543,
40
43
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/role-select.mdx": 1784199965202.2588,
41
44
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/router-adapter.mdx": 1784199965202.4397,
42
45
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/section-header.mdx": 1784199965202.5999,
43
46
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/sheet.mdx": 1784199965202.903,
44
- "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/sidebar.mdx": 1784199965203.122,
47
+ "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/sidebar.mdx": 1785019071707.4155,
45
48
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/sortable.mdx": 1784199965203.272,
46
49
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/stepper.mdx": 1784199965203.429,
47
50
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/switch.mdx": 1784199965203.5317,
48
51
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/table.mdx": 1784204823078.114,
49
52
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/tabs.mdx": 1784199965204.29,
50
53
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/theme.mdx": 1784199965204.5007,
51
- "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/timeline.mdx": 1784199965204.6672,
54
+ "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/timeline.mdx": 1785019071707.8389,
52
55
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/toast.mdx": 1784199965204.8867,
53
56
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/tooltip.mdx": 1784199965205.0623,
54
57
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/pages/upload-field.mdx": 1784199965205.2515,
@@ -66,6 +69,7 @@
66
69
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/card.example.tsx": 1784199965212.3513,
67
70
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/checkbox.example.tsx": 1783244991360.1206,
68
71
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/combobox-icons.example.tsx": 1784199965212.4543,
72
+ "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/combobox-long.example.tsx": 1785019071708.3032,
69
73
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/combobox-multi.example.tsx": 1784199965212.5752,
70
74
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/combobox-single.example.tsx": 1784199965212.704,
71
75
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/command-dialog.example.tsx": 1784199965213.1472,
@@ -88,13 +92,14 @@
88
92
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/launchpad-loading.example.tsx": 1784199965214.7434,
89
93
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/launchpad.example.tsx": 1784199965214.8447,
90
94
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/metric-card-loading.example.tsx": 1784199965214.9316,
91
- "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/metric-card.example.tsx": 1784199965215.0703,
95
+ "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/metric-card.example.tsx": 1785019071708.7175,
92
96
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/modal.example.tsx": 1784199965215.2239,
93
97
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/network-operator.example.tsx": 1783244991361.4246,
94
98
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/notice-inline.example.tsx": 1784199965215.3171,
95
99
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/notice-variants.example.tsx": 1784199965215.415,
96
100
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/otp-input.example.tsx": 1784199965215.5525,
97
101
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/otp-verify-dialog.example.tsx": 1784199965215.6523,
102
+ "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/page-section.example.tsx": 1785019071708.8628,
98
103
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/phone-number-input-field.example.tsx": 1784199965215.7544,
99
104
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/phone-number-input-form.example.tsx": 1783244991361.5684,
100
105
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/phone-number-input.example.tsx": 1784199965216.0054,
@@ -105,6 +110,7 @@
105
110
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/profile-popover-user-trigger.example.tsx": 1784199965216.6316,
106
111
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/profile-popover.example.tsx": 1784199965216.8098,
107
112
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/progress-bar.example.tsx": 1783244991362.397,
113
+ "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/quick-actions.example.tsx": 1785019071708.9573,
108
114
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/radio-decision-form.example.tsx": 1784199965216.9246,
109
115
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/radio-group-card.example.tsx": 1783244991362.4917,
110
116
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/previews/examples/radio-group.example.tsx": 1783244991362.5757,
@@ -142,13 +148,13 @@
142
148
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/breadcrumb.ts": 1783244991399.8157,
143
149
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/bulk-import-modal.ts": 1783245210848.7712,
144
150
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/button.ts": 1783244991400.0476,
145
- "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/card.ts": 1783244991400.1252,
151
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/card.ts": 1785019071727.2466,
146
152
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/checkbox.ts": 1783244991400.2012,
147
- "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/combobox.ts": 1784199965282.772,
153
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/combobox.ts": 1785019071727.5586,
148
154
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/command.ts": 1783244991400.279,
149
155
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/country-selector.ts": 1784199965283.0857,
150
156
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/date-range-selector.ts": 1784199965283.3066,
151
- "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/date-selector.ts": 1783244991400.5344,
157
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/date-selector.ts": 1785019071727.9043,
152
158
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/dialog.ts": 1783244991400.6208,
153
159
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/draggable.ts": 1783244991400.708,
154
160
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/dropdown.ts": 1784199965283.4802,
@@ -156,24 +162,26 @@
156
162
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/field.ts": 1783244991400.8787,
157
163
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/form.ts": 1783244991400.9707,
158
164
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/input.ts": 1783244991401.0735,
159
- "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/launchpad.ts": 1784199965283.6892,
160
- "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/metric-card.ts": 1784199965283.8164,
165
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/launchpad.ts": 1785019071728.0752,
166
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/metric-card.ts": 1785019071728.2725,
161
167
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/modal.ts": 1783245210848.887,
162
168
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/network-operator.ts": 1784199965283.9434,
163
169
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/notice.ts": 1784199965284.03,
164
170
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/otp-input.ts": 1783244991401.7898,
171
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/page-section.ts": 1785019071728.3667,
165
172
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/phone-number-input.ts": 1783244991402.2458,
166
173
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/popover.ts": 1783244991402.3584,
167
174
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/popup.ts": 1784199965284.1135,
168
175
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/profile-popover.ts": 1784199965284.22,
169
176
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/progress-bar.ts": 1783244991402.448,
177
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/quick-actions.ts": 1785019071728.6204,
170
178
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/radio-group.ts": 1783244991402.5474,
171
179
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/role-select.ts": 1784199965284.3,
172
180
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/router-adapter.ts": 1784199918458.1833,
173
181
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/search-param-overlay.ts": 1783244991402.6665,
174
182
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/section-header.ts": 1784199965284.3777,
175
183
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/sheet.ts": 1783244991402.7732,
176
- "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/sidebar.ts": 1784199965284.5107,
184
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/sidebar.ts": 1785019071728.998,
177
185
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/sortable.ts": 1783244991402.999,
178
186
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/stepper.ts": 1784199918458.3784,
179
187
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/types/switch.ts": 1784199965284.5896,
@@ -189,14 +197,14 @@
189
197
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/rules/components.md": 1784199965220.2507,
190
198
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/rules/forms.md": 1784199965220.358,
191
199
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/rules/layout.md": 1784199965220.4514,
192
- "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/rules/page-composition.md": 1784204823078.672,
200
+ "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/rules/page-composition.md": 1785019071710.1682,
193
201
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/rules/theming.md": 1784199965220.6528,
194
202
  "/Users/blaccgeorge/Documents/projects/gsl-components/demo/docs/rules/tokens.md": 1784199965220.7317,
195
- "/Users/blaccgeorge/Documents/projects/gsl-components/src/styles/theme/base.css": 1784199965280.3022,
203
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/styles/theme/base.css": 1785019071725.9846,
196
204
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/styles/theme/dark.css": 1784199965280.689,
197
- "/Users/blaccgeorge/Documents/projects/gsl-components/src/styles/theme/light.css": 1784199965282.035,
198
- "/Users/blaccgeorge/Documents/projects/gsl-components/src/styles/theme/tokens.css": 1784199965282.208,
199
- "/Users/blaccgeorge/Documents/projects/gsl-components/src/generated/components.theme.ts": 1784205372272.9944,
205
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/styles/theme/light.css": 1785019071726.1514,
206
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/styles/theme/tokens.css": 1785019071726.7317,
207
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/generated/components.theme.ts": 1785019227067.4211,
200
208
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/app-header/styles/app-header.css": 1784199965240.7898,
201
209
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/app-layout/styles/app-layout.css": 1784199965242.0874,
202
210
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/app-switcher/styles/app-switcher.css": 1784199965243.373,
@@ -205,48 +213,50 @@
205
213
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/breadcrumb/styles/breadcrumb.css": 1784199965244.855,
206
214
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/bulk-import-modal/styles/bulk-import-modal.css": 1784199965246.7773,
207
215
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/button/styles/button.css": 1784199965247.8584,
208
- "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/card/styles/card.css": 1784199965248.5056,
216
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/card/styles/card.css": 1785019071716.7864,
209
217
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/checkbox/styles/checkbox.css": 1784199965248.9827,
210
- "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/combobox/styles/combobox.css": 1784199965249.634,
218
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/combobox/styles/combobox.css": 1785019071717.597,
211
219
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/command/styles/command.css": 1784199965250.481,
212
220
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/country-selector/styles/country-selector.css": 1784199965251.3923,
213
221
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/date-range-selector/styles/date-range-selector.css": 1784199965252.3809,
214
- "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/date-selector/styles/date-selector.css": 1784199965252.9575,
222
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/date-selector/styles/date-selector.css": 1785019071718.5547,
215
223
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/dialog/styles/dialog.css": 1784199965253.5593,
216
224
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/draggable/styles/draggable.css": 1784199965254.1072,
217
225
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/dropdown/styles/dropdown.css": 1784199965254.912,
218
226
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/field/styles/field.css": 1784199965255.5784,
219
227
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/input/styles/input.css": 1784199965256.131,
220
- "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/launchpad/styles/launchpad.css": 1784199965257.7566,
221
- "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/metric-card/styles/metric-card.css": 1784204823079.8755,
228
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/launchpad/styles/launchpad.css": 1785019071719.6108,
229
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/metric-card/styles/metric-card.css": 1785019071720.035,
222
230
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/modal/styles/modal.css": 1784199965258.7732,
223
231
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/network-operator/styles/network-operator.css": 1784199965259.5852,
224
232
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/notice/styles/notice.css": 1784199965260.191,
225
233
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/otp-input/styles/otp-input.css": 1784199965260.6997,
234
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/page-section/styles/page-section.css": 1785019071720.6003,
226
235
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/phone-number-input/styles/phone-number-input.css": 1784199965261.375,
227
236
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/popover/styles/popover.css": 1784199965261.7966,
228
237
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/popup/styles/popup.css": 1784199965262.6003,
229
- "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/profile-popover/styles/profile-popover.css": 1784199965264.7893,
238
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/profile-popover/styles/profile-popover.css": 1785019071721.051,
230
239
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/progress-bar/styles/progress-bar.css": 1784199965266.9065,
240
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/quick-actions/styles/quick-actions.css": 1785019071721.575,
231
241
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/radio-group/styles/radio-group.css": 1784199965267.78,
232
242
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/role-select/styles/role-select.css": 1784199965268.2954,
233
243
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/section-header/styles/section-header.css": 1784199965268.7466,
234
244
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/sheet/styles/sheet.css": 1784199965269.3606,
235
- "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/sidebar/styles/sidebar.css": 1784199965270.448,
245
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/sidebar/styles/sidebar.css": 1785019071722.665,
236
246
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/sortable/styles/sortable.css": 1784199965271.1414,
237
247
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/stepper/styles/stepper.css": 1784199965271.8328,
238
248
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/switch/styles/switch.css": 1784199965272.3052,
239
249
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/table/styles/progress-modal.css": 1784199965273.8936,
240
- "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/table/styles/table.css": 1784199965274.0947,
241
- "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/tabs/styles/tabs.css": 1784199965274.697,
250
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/table/styles/table.css": 1785019071724.2114,
251
+ "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/tabs/styles/tabs.css": 1785019071725.3076,
242
252
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/textarea/styles/textarea.css": 1784199965275.2537,
243
253
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/timeline/styles/timeline.css": 1784199965276.5156,
244
254
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/toast/styles/toast.css": 1784199965277.0771,
245
255
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/tooltip/styles/tooltip.css": 1784199965277.567,
246
256
  "/Users/blaccgeorge/Documents/projects/gsl-components/src/components/upload-field/styles/upload-field.css": 1784199965278.4648
247
257
  },
248
- "componentCount": 51,
249
- "exampleCount": 85,
250
- "ruleCount": 67,
251
- "tokenCount": 174
258
+ "componentCount": 54,
259
+ "exampleCount": 88,
260
+ "ruleCount": 68,
261
+ "tokenCount": 175
252
262
  }
@@ -454,7 +454,16 @@
454
454
  "components": [
455
455
  "sidebar"
456
456
  ],
457
- "body": "The old default layout shell renders `<SidebarTrigger>Menu</SidebarTrigger>` to manually toggle\nthe sidebar. The new shell drops it entirely — don't render `SidebarTrigger` in new or touched\nlayouts. Use `SidebarProvider` with its defaults and no manual collapse control."
457
+ "body": "The old default layout shell renders `<SidebarTrigger>Menu</SidebarTrigger>` to manually toggle the\nsidebar. The new shell drops it entirely — don't render `SidebarTrigger` in new or touched\nlayouts. Use `SidebarProvider` with its defaults and no manual collapse control."
458
+ },
459
+ {
460
+ "id": "page-composition-sidebar-overlay-optional",
461
+ "title": "SidebarOverlay is rendered internally by Sidebar on mobile — explicit usage is optional",
462
+ "severity": "do",
463
+ "components": [
464
+ "sidebar"
465
+ ],
466
+ "body": "`Sidebar` now renders the mobile overlay (the full-viewport close-on-click backdrop) as a sibling\nof the `<aside>` whenever the viewport is below the sidebar's mobile breakpoint. The old default\nlayout shell required you to drop `<SidebarOverlay />` into `<AppSidebar>` — forgetting it left\nthe drawer with no backdrop. Drop the explicit `<SidebarOverlay />` in new/touched layouts; it\nremains exported for backward compatibility and is harmless if duplicated (two stacked overlays\nboth close the drawer on click, no visual artifact)."
458
467
  },
459
468
  {
460
469
  "id": "page-composition-sidebar-badge-numeric",
@@ -467,13 +476,13 @@
467
476
  },
468
477
  {
469
478
  "id": "page-composition-branding-in-app-header",
470
- "title": "Branding lives in AppHeader via AppHeaderBranding, never in the sidebar",
479
+ "title": "Branding lives in AppHeader via AppHeaderBranding; pass a matching mobileHeader to the plain Sidebar for the mobile drawer",
471
480
  "severity": "do",
472
481
  "components": [
473
482
  "app-header",
474
483
  "sidebar"
475
484
  ],
476
- "body": "Put branding in `AppHeader` via `AppHeaderBranding` (`logo`/`title`/`subtitle`), never in the\nsidebar. `Sidebar` has no `SidebarHeader`/`SidebarBrand` when `AppHeaderBranding` is used the\nsame logo must not appear twice on screen. Use the current brand logo (`clet-logo.png`) for any\nnew system — `gsl-logo.png` is the older mark used only by the legacy default layout shell."
485
+ "body": "Put branding in `AppHeader` via `AppHeaderBranding` (`logo`/`title`/`subtitle`). On desktop, the\nplain `Sidebar` has no `SidebarHeader`/`SidebarBrand` the same logo must not appear twice on\nscreen. On mobile, the `AppHeader` collapses to just the hamburger and the sidebar becomes a\nfull-overlay drawer pass the same brand content as a `mobileHeader` prop on the plain `Sidebar`\n(typically a `SidebarBrand` with the same logo/title as the `AppHeaderBranding`). The library\nwraps it in a `SidebarHeader` with the built-in `clet-sidebar__header--mobile-only` class, hidden\non desktop. `AppLayout` does NOT auto-extract the `AppHeaderBranding` — the two brand blocks are\nintentionally separate, since they live in different visual contexts with different styling.\nUse the current brand logo (`clet-logo.png`) for any new system — `gsl-logo.png` is the older\nmark used only by the legacy default layout shell."
477
486
  },
478
487
  {
479
488
  "id": "page-composition-profile-popover-default-items",
@@ -238,6 +238,13 @@
238
238
  "headings": [
239
239
  "Changelog",
240
240
  "[Unreleased]",
241
+ "[2.1.0] - 2026-07-25",
242
+ "Added",
243
+ "Changed",
244
+ "Fixed",
245
+ "[2.0.2] - 2026-07-23",
246
+ "Changed",
247
+ "Fixed",
241
248
  "[2.0.1] - 2026-07-16",
242
249
  "Added",
243
250
  "Breaking",
@@ -453,6 +460,31 @@
453
460
  "Notes"
454
461
  ]
455
462
  },
463
+ {
464
+ "slug": "dashboard-patterns",
465
+ "name": "Dashboard patterns",
466
+ "category": "Guide",
467
+ "keywords": [
468
+ "dashboard",
469
+ "page composition",
470
+ "page section",
471
+ "quick actions",
472
+ "tabs",
473
+ "timeline",
474
+ "stepper",
475
+ "multi-step"
476
+ ],
477
+ "description": "Composing a dashboard with PageSection, QuickActions, Tabs, Timeline, and Stepper",
478
+ "headings": [
479
+ "Dashboard patterns",
480
+ "Section layout with PageSection",
481
+ "Quick actions",
482
+ "Tabbed content with pill tabs",
483
+ "Audit trail with Timeline",
484
+ "Multi-step form with Stepper",
485
+ "Checklist"
486
+ ]
487
+ },
456
488
  {
457
489
  "slug": "date-range-selector",
458
490
  "name": "DateRangeSelector",
@@ -765,7 +797,7 @@
765
797
  "product switcher",
766
798
  "grid menu"
767
799
  ],
768
- "description": "Constrained 9-app launcher with a built-in expand button + required role switcher",
800
+ "description": "Constrained 9-app launcher with a top-right expand button + a See more line under the grid + required role switcher",
769
801
  "headings": [
770
802
  "Launchpad",
771
803
  "Examples",
@@ -853,6 +885,8 @@
853
885
  "One role switcher, consistent across all three locations",
854
886
  "Table family — adopt together",
855
887
  "Other preferred variants",
888
+ "PageSection — consistent section spacing",
889
+ "QuickActions — dashboard action grids",
856
890
  "Checklist"
857
891
  ]
858
892
  },
@@ -978,6 +1012,27 @@
978
1012
  "Notes"
979
1013
  ]
980
1014
  },
1015
+ {
1016
+ "slug": "page-section",
1017
+ "name": "PageSection",
1018
+ "category": "Components",
1019
+ "keywords": [
1020
+ "page section",
1021
+ "section",
1022
+ "spacing",
1023
+ "layout",
1024
+ "vertical gap"
1025
+ ],
1026
+ "description": "Uniform vertical spacing wrapper for page sections",
1027
+ "headings": [
1028
+ "PageSection",
1029
+ "Example",
1030
+ "Props",
1031
+ "Types",
1032
+ "`PageSectionClassNames`",
1033
+ "Notes"
1034
+ ]
1035
+ },
981
1036
  {
982
1037
  "slug": "phone-number-input",
983
1038
  "name": "PhoneNumberInput",
@@ -1113,6 +1168,28 @@
1113
1168
  "Notes"
1114
1169
  ]
1115
1170
  },
1171
+ {
1172
+ "slug": "quick-actions",
1173
+ "name": "QuickActions",
1174
+ "category": "Components",
1175
+ "keywords": [
1176
+ "quick actions",
1177
+ "action grid",
1178
+ "shortcuts",
1179
+ "customize",
1180
+ "dashboard actions"
1181
+ ],
1182
+ "description": "Quick action grid with optional customize dialog",
1183
+ "headings": [
1184
+ "QuickActions",
1185
+ "Example",
1186
+ "Props",
1187
+ "Types",
1188
+ "`QuickActionItem`",
1189
+ "`QuickActionsClassNames`",
1190
+ "Notes"
1191
+ ]
1192
+ },
1116
1193
  {
1117
1194
  "slug": "radio-group",
1118
1195
  "name": "RadioGroup",
@@ -1537,6 +1614,7 @@
1537
1614
  "Types",
1538
1615
  "`TimelineItemClassNames`",
1539
1616
  "Notes",
1617
+ "Don't",
1540
1618
  "Tokens"
1541
1619
  ]
1542
1620
  },
@@ -8,7 +8,7 @@
8
8
  "--clet-border": {
9
9
  "group": "color",
10
10
  "scope": "global",
11
- "light": "#dadce0",
11
+ "light": "#dadce073",
12
12
  "dark": "#3c4043"
13
13
  },
14
14
  "--clet-border-strong": {
@@ -241,7 +241,7 @@
241
241
  "--clet-z-header": {
242
242
  "group": "zIndex",
243
243
  "scope": "global",
244
- "base": "10"
244
+ "base": "2"
245
245
  },
246
246
  "--clet-z-modal": {
247
247
  "group": "zIndex",
@@ -813,7 +813,7 @@
813
813
  "group": "color",
814
814
  "scope": "component",
815
815
  "component": "sidebar",
816
- "base": "var(--gsl-text-secondary, var(--clet-text-secondary))"
816
+ "base": "var(\n\t\t--gsl-text-secondary,\n\t\tvar(--clet-text-secondary)\n\t)"
817
817
  },
818
818
  "--clet-sidebar-bg": {
819
819
  "group": "color",
@@ -845,6 +845,12 @@
845
845
  "component": "sidebar",
846
846
  "base": "0px"
847
847
  },
848
+ "--clet-sidebar-z": {
849
+ "group": "misc",
850
+ "scope": "component",
851
+ "component": "sidebar",
852
+ "base": "10000"
853
+ },
848
854
  "--clet-stepper-accent": {
849
855
  "group": "color",
850
856
  "scope": "component",
@@ -2,6 +2,7 @@ import { existsSync } from "node:fs";
2
2
  import { mkdir, readFile, writeFile } from "node:fs/promises";
3
3
  import os from "node:os";
4
4
  import path from "node:path";
5
+ import { MCP_SERVER_COMMAND } from "./util.js";
5
6
  const CODEX_DIR = path.join(os.homedir(), ".codex");
6
7
  const CONFIG_PATH = path.join(CODEX_DIR, "config.toml");
7
8
  const MARKER = "[mcp_servers.rfdtech-ui]";
@@ -18,7 +19,7 @@ export async function install() {
18
19
  if (existing.includes(MARKER)) {
19
20
  return { name: "Codex", changed: false, detail: "~/.codex/config.toml (already set)" };
20
21
  }
21
- const block = `\n${MARKER}\ncommand = "npx"\nargs = ["-y", "@rfdtech/components-mcp"]\n`;
22
+ const block = `\n${MARKER}\ncommand = ${JSON.stringify(MCP_SERVER_COMMAND.command)}\nargs = ${JSON.stringify(MCP_SERVER_COMMAND.args)}\n`;
22
23
  await writeFile(CONFIG_PATH, existing.replace(/\s*$/, "") + "\n" + block, "utf8");
23
24
  return { name: "Codex", changed: true, detail: "~/.codex/config.toml (updated)" };
24
25
  }
@@ -1,7 +1,7 @@
1
1
  import { existsSync } from "node:fs";
2
2
  import os from "node:os";
3
3
  import path from "node:path";
4
- import { appendPointerOnce, readJsonIfExists, writeJson } from "./util.js";
4
+ import { MCP_SERVER_COMMAND, appendPointerOnce, readJsonIfExists, writeJson, } from "./util.js";
5
5
  export function detect(cwd) {
6
6
  return (existsSync(path.join(cwd, "opencode.json")) ||
7
7
  existsSync(path.join(os.homedir(), ".config", "opencode")));
@@ -17,7 +17,11 @@ export async function install(cwd) {
17
17
  if (isNewFile)
18
18
  data.$schema ??= "https://opencode.ai/config.json";
19
19
  const mcp = { ...data.mcp };
20
- const desired = { type: "local", command: ["npx", "-y", "@rfdtech/components-mcp"], enabled: true };
20
+ const desired = {
21
+ type: "local",
22
+ command: [MCP_SERVER_COMMAND.command, ...MCP_SERVER_COMMAND.args],
23
+ enabled: true,
24
+ };
21
25
  const already = JSON.stringify(mcp["rfdtech-ui"]) === JSON.stringify(desired);
22
26
  mcp["rfdtech-ui"] = desired;
23
27
  data.mcp = mcp;
@@ -25,7 +25,7 @@ export async function runSetup(cwd = process.cwd()) {
25
25
  if (results.length === 0) {
26
26
  console.log("No supported AI tool detected (looked for .claude/, .mcp.json, .cursor/, ~/.codex/, " +
27
27
  "opencode.json, ~/.config/opencode).\n" +
28
- "The MCP server is still available directly: `npx @rfdtech/components-mcp` or `rfdui mcp`.");
28
+ "The MCP server is still available directly: `npx components-mcp` or `rfdui mcp`.");
29
29
  return;
30
30
  }
31
31
  for (const r of results) {